ClientController.php 0000644 0000000 0000000 00000210275 15000474167 013562 0 ustar root root id())) { return redirect('/'); } $query = "SELECT u.id, u.name ,(SELECT COUNT(*)AS total FROM user_to_client WHERE user_id = u.id) AS asigments FROM users u WHERE u.type = 3 AND u.status = 1"; $query2 = "SELECT u.id, u.name FROM users u WHERE u.status = 1"; $data['users'] = DB::select($query); $data['users_all'] = DB::select($query2); $data['states_of_america'] = StateOfAmerica::all(); $data['company_services'] = CompanyService::where('company_id', Auth::user()->company_id)->get(); $data['title'] = 'Module Client | Plataform TaxlabPro'; return view('client.list', $data); } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(Request $request) { // echo "
"; // print_r($request); // echo ""; } public function pdf_f433a($id) { if (empty(auth()->id())) { return redirect('/'); } $client = Client::select('clients.*', 'states_of_america.abrev as state_abrev', 'states_of_america.name as state_name') ->join('states_of_america', 'states_of_america.id', 'clients.state') ->first(); $dependents = Dependent::where('client_id',$id)->get(); $businessInterests = BusinessInterest::where('client_id',$id)->get(); $employments = Employment::select('employment.*', 'pay_periods.name as pay_period_name') ->leftjoin('pay_periods', 'pay_periods.id', 'employment.pay_period') ->where('client_id',$id)->get(); $employmentSpouses = EmploymentSpouse::select('employment_spouse.*', 'pay_periods.name as pay_period_name') ->leftjoin('pay_periods', 'pay_periods.id', 'employment_spouse.pay_period') ->where('client_id',$id)->get(); $lawsuits = Lawsuit:: where('client_id',$id)->get(); $bankruptcys = Bankruptcy:: where('client_id',$id)->get(); $livedAbroads = LivedAbroad:: where('client_id',$id)->get(); $trustees = Trustee:: where('client_id',$id)->get(); $safeDepositBoxs = SafeDepositBox:: where('client_id',$id)->get(); $bankAccounts = BankAccount:: select('bank_accounts.*', 'bank_account_types.name as bank_type_name') ->join('bank_account_types','bank_account_types.id','bank_accounts.type_of_account') ->where('bank_accounts.client_id',$id)->get(); $investmentAccounts = InvestmentAccount::select('investment_accounts.*', 'bank_account_types.name as bank_type_name') ->join('bank_account_types','bank_account_types.id','investment_accounts.type_of_account') ->where('investment_accounts.client_id',$id)->get(); $digitalAssets = DigitalAsset:: where('client_id',$id)->get(); $creditAccounts = CreditAccount:: where('client_id',$id)->get(); $lifeInsurances = LifeInsurance:: where('client_id',$id)->get(); $propertys = Property:: where('client_id',$id)->get(); $vehicles = Vehicle:: where('client_id',$id)->get(); $otherAssets = OtherAsset:: where('client_id',$id)->get(); $monthlyFinancials = MonthlyFinancial::where('client_id',$id)->get(); $paymentProcessors = PaymentProcessor::where('client_id',$id)->get(); $creditCards = CreditCard::where('client_id',$id)->get(); $businessBankAccounts = BusinessBankAccount::select('business_bank_accounts.*', 'bank_account_types.name as bank_type_name') ->join('bank_account_types','bank_account_types.id','business_bank_accounts.type_of_account') ->where('business_bank_accounts.client_id',$id)->get(); $companyAccountReceivables = CompanyAccountReceivable::where('client_id',$id)->get(); $companyDigitalAssets = CompanyDigitalAsset::where('client_id',$id)->get(); $companyToolEquipments = CompanyToolEquipment::where('client_id',$id)->get(); $totalLifeInsurance = $lifeInsurances->sum(function($insurance) { $currentCashValue = (float) $insurance->current_cash_value; $loanBalance = (float) $insurance->outstanding_loan_balance; return $currentCashValue - $loanBalance; }); return PDF::loadView('pdf.f433a', [ 'client' => $client, 'dependents' => $dependents, 'businessInterests' => $businessInterests, 'employments' => $employments, 'employmentSpouses' => $employmentSpouses, 'lawsuits' => $lawsuits, 'bankruptcys' => $bankruptcys, 'livedAbroads' => $livedAbroads, 'trustees' => $trustees, 'safeDepositBoxs' => $safeDepositBoxs, 'bankAccounts' => $bankAccounts, 'investmentAccounts' => $investmentAccounts, 'digitalAssets' => $digitalAssets, 'creditAccounts' => $creditAccounts, 'lifeInsurances' => $lifeInsurances, 'totalLifeInsurance' => $totalLifeInsurance, 'propertys' => $propertys, 'vehicles' => $vehicles, 'otherAssets' => $otherAssets, 'monthlyFinancials' => $monthlyFinancials, 'paymentProcessors' => $paymentProcessors, 'creditCards' => $creditCards, 'businessBankAccounts' => $businessBankAccounts, 'companyAccountReceivables' => $companyAccountReceivables, 'companyDigitalAssets' => $companyDigitalAssets, 'companyToolEquipments' => $companyToolEquipments, ]) ->setPaper('letter', 'portrait') ->stream('f433a.pdf'); } public function pdf_f433b($id) { if (empty(auth()->id())) { return redirect('/'); } $client = Client::select('clients.*', 'states_of_america.abrev as state_abrev', 'states_of_america.name as state_name', 'country.name as country_name', 'business_types.name as business_types_name' ) ->leftjoin('states_of_america', 'states_of_america.id', 'clients.state') ->leftjoin('country', 'country.id', 'clients.country') ->leftjoin('business_types', 'business_types.id', 'clients.type_of_entity') ->where('clients.id', $id) ->first(); if ($client == null) { return redirect('clients'); } $businessTypes = BusinessType::all(); $ecommerceProcessors = EcommerceProcessor::where('client_id',$id)->get(); $creditCards = CreditCard::where('client_id',$id)->get(); $partnerOffices = PartnerOfficer::where('client_id',$id)->get(); $statesOfAmerica = StateOfAmerica::all(); $payrollServiceProviders = PayrollServiceProvider::where('client_id',$id)->get(); $lawsuits = Lawsuit::where('client_id',$id)->get(); $bankruptcies = Bankruptcy::where('client_id',$id)->get(); $relatedPartyOweBusiness = RelatedPartyOweBusiness::where('client_id',$id)->get(); $businessAssetTransfers = BusinessAssetTransfer::where('client_id',$id)->get(); $incomeChanges = IncomeChange::where('client_id',$id)->get(); $safes = Safe::where('client_id',$id)->get(); $bankAccounts = BankAccount::where('client_id',$id)->get(); $bankAccountTypes = BankAccountType::all(); $receivables = Receivable::where('client_id',$id)->get(); $investmentAccounts = InvestmentAccount::where('client_id',$id)->get(); $creditLines = CreditLine::where('client_id',$id)->get(); $propertys = Property::where('client_id',$id)->get(); $vehicles = Vehicle::where('client_id',$id)->get(); $companyToolEquipments = CompanyToolEquipment::where('client_id',$id)->get(); $intangibleAssets = IntangibleAsset::where('client_id',$id)->get(); $businessLiabilitys = BusinessLiability::where('client_id',$id)->get(); $monthlyFinancials = MonthlyFinancial::where('client_id',$id)->get(); return PDF::loadView('pdf.f433b', [ 'client' => $client, 'businessTypes' => $businessTypes, 'ecommerceProcessors' => $ecommerceProcessors, 'creditCards' => $creditCards, 'partnerOffices' => $partnerOffices, 'statesOfAmerica' => $statesOfAmerica, 'payrollServiceProviders' => $payrollServiceProviders, 'lawsuits' => $lawsuits, 'bankruptcies' => $bankruptcies, 'relatedPartyOweBusiness' => $relatedPartyOweBusiness, 'businessAssetTransfers' => $businessAssetTransfers, 'incomeChanges' => $incomeChanges, 'safes' => $safes, 'bankAccounts' => $bankAccounts, 'bankAccountTypes' => $bankAccountTypes, 'receivables' => $receivables, 'investmentAccounts' => $investmentAccounts, 'creditLines' => $creditLines, 'propertys' => $propertys, 'vehicles' => $vehicles, 'companyToolEquipments' => $companyToolEquipments, 'intangibleAssets' => $intangibleAssets, 'businessLiabilitys' => $businessLiabilitys, 'monthlyFinancials' => $monthlyFinancials, ]) ->setPaper('letter', 'portrait') ->stream('f433b.pdf'); } public function pdf_f433d(Request $request) { if (empty(auth()->id())) { return redirect('/'); } return PDF::loadView('pdf.f433d') ->setPaper('letter', 'portrait') ->stream('f433d.pdf'); } public function pdf_f8821(Request $request) { if (empty(auth()->id())) { return redirect('/'); } return PDF::loadView('pdf.f8821') ->setPaper('letter', 'portrait') ->stream('f8821.pdf'); } public function pdf_f2848(Request $request) { if (empty(auth()->id())) { return redirect('/'); } return PDF::loadView('pdf.f2848') ->setPaper('letter', 'portrait') ->stream('f2848.pdf'); } public function save(ClientRequest $request) { if (empty(auth()->id())) { return redirect('/'); } try { if (!$request->ajax()) { return response()->json([ 'status' => false, 'msg' => 'Intente de nuevo', 'type' => 'warning' ]); } $validatedData = $request->validated(); //necesito verificar si el ssn existe en BD //$request->input('ssn') $exists = \DB::table('clients') ->where('ssn', $request->input('ssn')) ->exists(); if ($exists) { // 3. Retorna un mensaje de “ya existe” sin guardar nada return response()->json([ 'status' => false, 'msg' => 'El SSN ya existe en la base de datos.', 'type' => 'warning' ]); } Client::create([ 'first_name' => $request->input('first_name'), 'mi' => $request->input('mi'), 'form_type' => $request->input('form_type'), 'last_name' => $request->input('last_name'), 'ssn' => $request->input('ssn'), 'date_birdth' => $request->input('date_birth'), 'dl' => $request->input('dl'), 'dl_state' => $request->input('dl_state'), 'has_passport' => $request->input('has_passport'), 'client_reference' => $request->input('client_reference'), 'saludation_for_letter' => $request->input('saludation_for_letter'), 'type_address' => $request->input('type_address'), 'address_1' => $request->input('address_1'), 'address_2' => $request->input('address_2'), 'city' => $request->input('city'), 'state' => $request->input('state'), 'zipcode' => $request->input('zipcode'), 'country' => $request->input('country'), 'm_address_1' => $request->input('m_address_1'), 'm_address_2' => $request->input('m_address_2'), 'm_city' => $request->input('m_city'), 'm_state' => $request->input('m_state'), 'm_zipcode' => $request->input('m_zipcode'), 'marital_status' => $request->input('marital_status'), 'marital_date' => $request->input('marital_date'), 'spouse_first_name' => $request->input('spouse_first_name'), 'spouse_mi' => $request->input('spouse_mi'), 'spouse_last_name' => $request->input('spouse_last_name'), 'spouse_ssn' => $request->input('spouse_ssn'), 'spouse_date_birdth' => $request->input('spouse_date_birdth'), 'spouse_dl' => $request->input('spouse_dl'), 'spouse_dl_state' => $request->input('spouse_dl_state'), 'spouse_has_passport' => $request->input('spouse_has_passport'), 'spouse_saludation_for_letter' => $request->input('spouse_saludation_for_letter'), 'phone_home' => $request->input('phone_home'), 'cell_home' => $request->input('cell_home'), 'fax_home' => $request->input('fax_home'), 'phone_work' => $request->input('phone_work'), 'cell_work' => $request->input('cell_work'), 'fax_work' => $request->input('fax_work'), 'spouse_phone_home' => $request->input('spouse_phone_home'), 'spouse_cell_home' => $request->input('spouse_cell_home'), 'spouse_fax_home' => $request->input('spouse_fax_home'), 'spouse_phone_work' => $request->input('spouse_phone_work'), 'spouse_cell_work' => $request->input('spouse_cell_work'), 'spouse_fax_work' => $request->input('spouse_fax_work'), 'tax_payer_email' => $request->input('tax_payer_email'), 'spouse_email' => $request->input('spouse_email'), 'estatus' => 1, 'tags' => $request->input('tags'), 'monitor' => $request->input('monitor'), 'type' => $request->input('type'), 'avatar' => 1, 'case_status' => 1, 'company_id' => Auth::user()->company_id ]); $client = Client::latest('id')->first(); $this->generateDifferentModules($client); if (Auth::user()->type == 3) { UserClient::create([ 'client_id' => $client['id'], 'user_id' => Auth::user()->id ]); } $userGuest = User::infoClient(Auth::user()->id); $userAdmin = User::getUserAdminByCompany($userGuest->company_id); // send_notification($userAdmin[0]->id, 'New Client', $userGuest->name.' has created a new client.', 'clients', '👤➕', 'info'); return response()->json([ 'status' => true, 'msg' => 'Successfully registered client', 'type' => 'success', 'title' =>'Perfect!' ]); } catch (\Exception $e) { return response()->json([ 'status' => false, 'msg' => 'Ocurrió un error al registrar un cliente. Intente de nuevo.', 'type' => 'error', 'error' => $e->getMessage() ]); } } public function generateDifferentModules($client) { Dependent::create(['client_id' => $client['id']]); Employment::create(['client_id' => $client['id']]); EmploymentSpouse::create(['client_id' => $client['id']]); BusinessInterest::create(['client_id' => $client['id']]); Lawsuit::create(['client_id' => $client['id']]); LawsuitIRS::create(['client_id' => $client['id']]); Bankruptcy::create(['client_id' => $client['id']]); BeneficiaryInsurance::create(['client_id' => $client['id']]); Trustee::create(['client_id' => $client['id']]); TrustFund::create(['client_id' => $client['id']]); SafeDepositBox::create(['client_id' => $client['id']]); LivedAbroad::create(['client_id' => $client['id']]); AssetAbroad::create(['client_id' => $client['id']]); BankAccount::create(['client_id' => $client['id']]); InvestmentAccount::create(['client_id' => $client['id']]); DigitalAsset::create(['client_id' => $client['id']]); RetirementAccount::create(['client_id' => $client['id']]); CreditAccount::create(['client_id' => $client['id']]); LifeInsurance::create(['client_id' => $client['id']]); AssetTransfer::create(['client_id' => $client['id']]); RealEstateTransfer::create(['client_id' => $client['id']]); TypeResidence::create(['client_id' => $client['id']]); Property::create(['client_id' => $client['id']]); PropertySale::create(['client_id' => $client['id']]); Vehicle::create(['client_id' => $client['id']]); OtherAsset::create(['client_id' => $client['id']]); PaymentProcessor::create(['client_id' => $client['id']]); CreditCard::create(['client_id' => $client['id']]); BusinessBankAccount::create(['client_id' => $client['id']]); CompanyBankAccount::create(['client_id' => $client['id']]); CompanyDigitalAsset::create(['client_id' => $client['id']]); CompanyAccountReceivable::create(['client_id' => $client['id']]); CompanyToolEquipment::create(['client_id' => $client['id']]); CompanyIntangibleAsset::create(['client_id' => $client['id']]); IncomeExpensePeriod::create(['client_id' => $client['id']]); EcommerceProcessor::create(['client_id' => $client['id']]); PartnerOfficer::create(['client_id' => $client['id']]); BusinessAffiliation::create(['client_id' => $client['id']]); PayrollServiceProvider::create(['client_id' => $client['id']]); RelatedPartyOweBusiness::create(['client_id' => $client['id']]); TaxpayerLawsuitIrs::create(['client_id' => $client['id']]); BusinessAssetTransfer::create(['client_id' => $client['id']]); IncomeChange::create(['client_id' => $client['id']]); Safe::create(['client_id' => $client['id']]); Receivable::create(['client_id' => $client['id']]); CreditLine::create(['client_id' => $client['id']]); ForeignProperty::create(['client_id' => $client['id']]); IntangibleAsset::create(['client_id' => $client['id']]); BusinessLiability::create(['client_id' => $client['id']]); ClientService::create(['client_id' => $client['id']]); MonthlyFinancial::create(['client_id' => $client['id']]); } /** * Display the specified resource. */ public function show(Client $client) { // } /** * Show the form for editing the specified resource. */ public function edit($id) { if (empty(auth()->id())) { return redirect('/'); } if (!$id) { return response()->json([ 'status' => false, 'msg' => 'Intente de nuevo', 'type' => 'warning' ]); } $client = Client::find($id); return response()->json([ 'status' => true, 'msg' => 'get Info', 'type' => 'success', 'data' => $client ]); } /** * Update the specified resource in storage. */ public function update(UpdateClientRequest $request, $id) { if (empty(auth()->id())) { return redirect('/'); } if (!$request->ajax()) { return response()->json([ 'status' => false, 'msg' => 'Intente de nuevo', 'type' => 'warning' ]); } $client = Client::find($id); if (!$client) { return response()->json(['status' => false, 'msg' => 'Cliente no encontrado'], 404); } $validatedData = $request->validated(); $client = Client::find($request->input('id')); $client->first_name = $request->input('first_name'); $client->mi = $request->input('mi'); $client->form_type = $request->input('form_type'); $client->last_name = $request->input('last_name'); $client->ssn = $request->input('ssn'); $client->date_birdth = $request->input('date_birth'); $client->dl = $request->input('dl'); $client->dl_state = $request->input('dl_state'); $client->has_passport = $request->input('has_passport'); $client->client_reference = $request->input('client_reference'); $client->saludation_for_letter = $request->input('saludation_for_letter'); $client->type_address = $request->input('type_address'); $client->address_1 = $request->input('address_1'); $client->address_2 = $request->input('address_2'); $client->city = $request->input('city'); $client->state = $request->input('state'); $client->zipcode = $request->input('zipcode'); $client->country = $request->input('country'); $client->m_address_1 = $request->input('m_address_1'); $client->m_address_2 = $request->input('m_address_2'); $client->m_city = $request->input('m_city'); $client->m_state = $request->input('m_state'); $client->m_zipcode = $request->input('m_zipcode'); $client->marital_status = $request->input('marital_status'); $client->marital_date = $request->input('marital_date'); $client->spouse_first_name = $request->input('spouse_first_name'); $client->spouse_mi = $request->input('spouse_mi'); $client->spouse_last_name = $request->input('spouse_last_name'); $client->spouse_ssn = $request->input('spouse_ssn'); $client->spouse_date_birdth = $request->input('spouse_date_birdth'); $client->spouse_dl = $request->input('spouse_dl'); $client->spouse_dl_state = $request->input('spouse_dl_state'); $client->spouse_has_passport = $request->input('spouse_has_passport'); $client->spouse_saludation_for_letter = $request->input('spouse_saludation_for_letter'); $client->phone_home = $request->input('phone_home'); $client->cell_home = $request->input('cell_home'); $client->fax_home = $request->input('fax_home'); $client->phone_work = $request->input('phone_work'); $client->cell_work = $request->input('cell_work'); $client->fax_work = $request->input('preferred'); $client->spouse_phone_home = $request->input('spouse_phone_home'); $client->spouse_cell_home = $request->input('spouse_cell_home'); $client->spouse_fax_home = $request->input('spouse_fax_home'); $client->spouse_phone_work = $request->input('spouse_phone_work'); $client->spouse_cell_work = $request->input('spouse_cell_work'); $client->spouse_fax_work = $request->input('spouse_preferred'); $client->tax_payer_email = $request->input('tax_payer_email'); $client->spouse_email = $request->input('spouse_email'); // $client->estatus = 1; $client->tags = $request->input('tags'); $client->monitor = $request->input('monitor'); $client->type = $request->input('type'); // $client->avatar = 1; // $client->case_status = 1; // $client->company_id = Auth::user()->company_id; $client->save(); if (Auth::user()->type == 3) { UserClient::create([ 'client_id' => $id, 'user_id' => Auth::user()->id ]); } $userGuest = User::infoClient(Auth::user()->id); $userAdmin = User::getUserAdminByCompany($userGuest->company_id); if (!empty($userAdmin)) { send_notification($userAdmin[0]->id, 'Update Client', $userGuest->name.' has updated a new client.', 'clients', '👤✏️', 'info'); } return response()->json([ 'status' => true, 'msg' => 'Successfully registered client', 'type' => 'success', 'title' =>'Perfect!' ]); } /** * Remove the specified resource from storage. */ public function destroy(Client $client) { // } public function clients_json() { if (empty(auth()->id())) { return redirect('/'); } if (Auth::user()->type == 1) { $lista = Client::select( DB::raw("CONCAT(first_name,' ',last_name) AS full_name"), DB::raw("CONCAT(spouse_first_name,' ',spouse_last_name) AS spouse"), DB::raw("CONCAT(client_reference) AS reference"), "clients.id", 'phone_home', 'cell_home', 'clients.city', 'clients.address_1', 'estatus as status' ,'avatar.image as avatar', 'case_status','clients.form_type','business_name','tax_payer_email') ->join('avatar','avatar.id', 'clients.avatar') ->orderby('clients.updated_at', 'desc') ->get(); } else { if (Auth::user()->type == 2) { $lista = Client::select( DB::raw("CONCAT(first_name,' ',last_name) AS full_name"), DB::raw("CONCAT(spouse_first_name,' ',spouse_last_name) AS spouse"), DB::raw("CONCAT(client_reference) AS reference"), "clients.id", 'phone_home', 'cell_home', 'clients.city', 'clients.address_1', 'estatus as status','avatar.image as avatar', 'case_status','clients.form_type','business_name','tax_payer_email') ->join('avatar','avatar.id', 'clients.avatar') ->where('company_id', Auth::user()->company_id) ->orderby('clients.updated_at', 'desc') ->get(); } else { $lista = Client::select( DB::raw("CONCAT(first_name,' ',last_name) AS full_name"), DB::raw("CONCAT(spouse_first_name,' ',spouse_last_name) AS spouse"), DB::raw("CONCAT(client_reference) AS reference"), "clients.id", 'phone_home', 'cell_home', 'clients.city', 'clients.address_1', 'estatus as status','avatar.image as avatar', 'case_status','clients.form_type','business_name','tax_payer_email') // ->leftjoin('user_to_client','user_to_client.client_id', 'clients.id') ->join('avatar','avatar.id', 'clients.avatar') ->where('company_id', Auth::user()->company_id) // ->where('user_to_client.user_id', Auth::user()->id) ->orderby('clients.updated_at', 'desc') ->get(); } } return Datatables() ->of($lista) ->addColumn('full_name', function ($clients) { $id = $clients->id; $stateNum = mt_rand(0, 6); // Lista de estados de Bootstrap $states = ['success', 'danger', 'warning', 'info', 'dark', 'primary', 'secondary']; // Obtener el estado correspondiente $state = $states[$stateNum]; // Simular el nombre completo (esto debe venir de tu base de datos o entrada) $name = $clients->full_name; $post = $clients->address_1; // Obtener las iniciales del nombre preg_match_all('/\b\w/', $name, $matches); $initials = strtoupper(implode('', array($matches[0][0] ?? '', end($matches[0]) ?? ''))); // Generar la salida HTML $output = '' . $initials . ''; $row_output = '
Schedule: '.$new_date.'
Asigment to: '.$item->user_name.'
'.$item->type_user.''.strip_tags($note->description).'
'; // print($infoClient); // echo ''; // exit(); Activities::create([ 'deal' => $request->input('deal'), 'title' => $request->input('title'), 'type' => $request->input('type'), 'notes' => $request->input('notes'), 'date' => $request->input('date'), 'time' => $request->input('time'), 'duration' => $request->input('duration'), 'client_id' => $request->input('client_id'), 'user_id' => Auth::user()->id, ]); $userGuest = User::infoClient(Auth::user()->id); $userAdmin = User::getUserAdminByCompany($userGuest->company_id); if (empty($userAdmin)) { $userAdmin = User::getUserAdminByCompanyGeneral(); } send_notification($userAdmin[0]->id, 'New Activity', $userGuest->name.' has created a new activiy for '.$fullNameClient, 'calendar', '🗓️', 'info'); return response()->json([ 'status' => true, 'msg' => 'Successfully registered Activity', 'type' => 'success', 'title' =>'Perfect!' ]); } public function notes_post(Request $request) { if (empty(auth()->id())) { return redirect('/'); } if (!$request->ajax()) { return response()->json([ 'status' => false, 'msg' => 'Intente de nuevo', 'type' => 'warning' ]); } if (empty($request->note)) { return response()->json([ 'status' => false, 'msg' => 'The field note is required', 'type' => 'warning' ]); } Notes::create([ 'description' => $request->input('note'), 'client_id' => $request->input('client_id'), 'user_id' => Auth::user()->id, ]); return response()->json([ 'status' => true, 'msg' => 'Successfully registered Note', 'type' => 'success', 'title' =>'Perfect!' ]); } public function files_post(Request $request) { if (empty(auth()->id())) { return redirect('/'); } if (!$request->ajax()) { return response()->json([ 'status' => false, 'msg' => 'Intente de nuevo', 'type' => 'warning' ]); } if (!empty($_FILES['file']['name'])) { $name_file = time().basename($_FILES['file']['name']); $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); Files::create([ 'url' => $name_file, 'client_id' => $request->input('client_id'), 'user_id' => Auth::user()->id, 'ext' => $extension ]); $destino = "uploads/".$name_file; move_uploaded_file($_FILES['file']['tmp_name'], $destino); return response()->json([ 'status' => true, 'msg' => 'Successfully registered Files', 'type' => 'success', 'title' =>'Perfect!' ]); } else { return response()->json([ 'status' => false, 'msg' => 'Intente de nuevo', 'type' => 'warning' ]); } } public function detail($id) { if (!auth()->check()) { return redirect('/'); } $user = Auth::user(); // Optimización: Usamos Eloquent en lugar de DB::table() $client = Client::with([ // 'userClients.user', 'avatar', 'dependents', 'employment', 'employment_spouse', 'business_interests', 'lawsuits', 'lawsuit_irs', 'bankruptcies', 'beneficiaries_insurance', 'trustees', 'trustFunds', 'safeDepositBoxes', 'livedAbroads', 'assetAbroads', 'bankAccounts', 'investmentAccounts', 'digitalAssets', 'retirementAccounts', 'creditAccounts', 'lifeInsurances', 'assetTransfers', 'realEstateTransfers', 'typeResidence', 'properties', 'propertySales', 'vehicles', 'otherAssets', 'paymentProcessors', 'creditCards', 'businessBankAccounts', 'companyBankAccounts', 'companyDigitalAssets', 'companyAccountReceivables', 'companyToolEquipments', 'companyIntangibleAssets', 'incomeExpensePeriods', 'ecommerceProcessors', 'partnersOfficers', 'businessAffiliations', 'payrollServiceProviders', 'relatedPartiesOweBusiness', 'taxpayerLawsuitsIrs', 'businessAssetTransfers', 'incomeChanges', 'safe', 'receivables', 'creditLines', 'foreignProperties', 'intangibleAssets', 'businessLiabilities', 'monthlyFinancial' ]) ->withCount(['activities', 'files', 'notes']) // Optimiza los conteos con withCount ->where('id', $id); if ($user->type == 3) { // $client->whereHas('userClients.user', function ($query) use ($user) { // $query->where('id', $user->id); // }); // $client->whereHas('users', function ($query) use ($user) { // $query->where('clients.id', $user->id); // }); } $client = $client->first(); // dd($client); // dd($client); // exit(); if (!$client) { return redirect('clients'); } return view('client.detail', [ 'client' => $client, 'payPeriods' => PayPeriod::all(), 'bankAccountType' => BankAccountType::all(), 'businessTypes' => BusinessType::all(), 'states_of_america' => StateOfAmerica::all(), 'accountTypes' => AccountType::all(), 'id' => $id, 'title' => 'Module Client | Plataform TaxlabPro' ]); } public function update_info(Request $request) { if (empty(auth()->id())) { return response()->json([ 'status' => false, 'msg' => 'Your Ip was blocked', 'type' => 'warning' ]); } if (!$request->ajax()) { return response()->json([ 'status' => false, 'msg' => 'Intente de nuevo', 'type' => 'warning' ]); } $name = $request->input('name'); $value = $request->input('value'); $householdMembers = HouseholdMembers::where('client_id', 22)->first(); $householdMembers->$name = $value; $householdMembers->save(); return response()->json([ 'status' => true, 'msg' => 'information updated correctly', 'type' => 'success', 'title' =>'Perfect!' ]); } public function update_info_question(Request $request,$id) { if (empty(auth()->id())) { return response()->json([ 'status' => false, 'msg' => 'Your Ip was blocked', 'type' => 'warning' ]); } if (!$request->ajax()) { return response()->json([ 'status' => false, 'msg' => 'Intente de nuevo', 'type' => 'warning' ]); } $name = $request->input('name'); $value = $request->input('value'); // $id = $request->input('id'); $client = Client::find($id); $client->$name = $value; $client->save(); return response()->json([ 'status' => true, 'msg' => 'information updated correctly**', 'type' => 'success', 'title' =>'Perfect!' ]); } function user_by_client(Request $request) { if (empty(auth()->id())) { return response()->json([ 'status' => false, 'msg' => 'Your Ip was blocked', 'type' => 'warning' ]); } if (!$request->ajax()) { return response()->json([ 'status' => false, 'msg' => 'Intente de nuevo', 'type' => 'warning' ]); } $id = $request->input('id'); if (empty($id)) { return response()->json([ 'status' => false, 'msg' => 'the input id is required', 'type' => 'warning' ]); } $client = Client::select('clients.id', 'first_name','last_name', 'avatar') ->join('user_to_client', 'user_to_client.client_id', 'clients.id') ->where('user_to_client.user_id', $id) ->get(); return response()->json([ 'status' => true, 'msg' => 'List client asign to user', 'type' => 'success', 'data' => $client ]); } public function clients_search(Request $request) { $term = $request->input('term'); // Ajusta la lógica según tu modelo y campos if (Auth::user()->type == 1) { $results = Client::select( 'id', DB::raw("CONCAT(first_name, ' ', last_name) as full_name") ) ->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$term}%"]) ->take(10) ->get(); } else { $results = Client::select( 'id', DB::raw("CONCAT(first_name, ' ', last_name) as full_name") ) ->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$term}%"]) ->where('company_id', Auth::user()->company_id) ->take(10) ->get(); } // Retorna un array de objetos con 'label' y 'value' (o solo strings) $formattedResults = $results->map(function($client) { return [ 'label' => $client->full_name, 'value' => $client->id ]; }); return response()->json($formattedResults); } public function clients_list() { $query = Client::select( 'id', DB::raw("CONCAT(first_name, ' ', last_name) as full_name") ); // Si no es tipo 1, filtramos por empresa if (Auth::user()->type != 1) { $query->where('company_id', Auth::user()->company_id); } $results = $query->get(); // Formateamos la respuesta $formattedResults = $results->map(function ($client) { return [ 'name' => $client->full_name, 'url' => route('clients.detail', ['id' => $client->id]), 'icon' => '' ]; }); return response()->json([ 'list' => $formattedResults ]); } }