Path : /var/www/html/usd_loan_system/app/Http/Controllers/ |
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
Current File : /var/www/html/usd_loan_system/app/Http/Controllers/UpdateController.php |
<?php namespace App\Http\Controllers; use App\Helpers\GeneralHelper; use App\Models\Branch; use App\Models\BranchUser; use App\Models\JournalEntry; use App\Models\Loan; use App\Models\LoanRepayment; use App\Models\LoanSchedule; use App\Models\LoanTransaction; use App\Models\Setting; use Cartalyst\Sentinel\Laravel\Facades\Sentinel; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Mail; use Laracasts\Flash\Flash; class UpdateController extends Controller { public function __construct() { $this->middleware('sentinel'); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function download() { $path = storage_path() . "/updates/update.zip"; $url = $_REQUEST['url']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); $fp = fopen($path, 'w+'); curl_setopt($ch, CURLOPT_FILE, $fp); $output = curl_exec($ch); if ($output) { $msg = translate('file_downloaded_successfully'); } else { $error = translate('failed_to_download_file'); } curl_close($ch); fclose($fp); return view('update.download', compact('msg', 'error')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function install() { if (file_exists(storage_path() . "/updates/update.zip")) { //begin the update $zip = new \ZipArchive(); if ($zip->open(storage_path() . "/updates/update.zip") === TRUE) { $res = $zip->extractTo(storage_path("updates")); $zip->close(); //run new migrations Artisan::call('view:clear'); Artisan::call('cache:clear'); Artisan::call('config:clear'); Artisan::call('migrate'); unlink(storage_path() . "/updates/update.zip"); Flash::warning(translate('update_successful')); return redirect('update/finish'); } else { Flash::warning(translate('update_file_does_not_exist')); return redirect()->back(); } } else { Flash::warning(translate('update_file_does_not_exist')); return redirect()->back(); } //return view('tax.create', compact('')); } public function finish() { return view('update.finish', compact('')); } public function fix() { //fix schedules $count = 0; foreach (LoanSchedule::all() as $key) { if (empty($key->branch_id) && !empty($key->loan)) { $b = LoanSchedule::find($key->id); $b->branch_id = $key->loan->branch_id; $b->save(); $count += 1; } } Flash::success("Successfully fixed " . $count . " records"); return redirect('dashboard'); } public function fix_schedules() { //fix schedules $count = 0; foreach (LoanSchedule::all() as $key) { if (empty($key->branch_id) && !empty($key->loan)) { $b = LoanSchedule::find($key->id); $b->branch_id = $key->loan->branch_id; $b->save(); $count += 1; } } Flash::success("Successfully fixed " . $count . " records"); return redirect('dashboard'); } public function set_default_branch() { //fix schedules if (!empty(Branch::first())) { $branch = Branch::first(); //look for 1 admin user to give the permission $role = Sentinel::findRoleBySlug('admin'); if (!empty($role)) { if (!empty($role->users()->with('roles')->first())) { $user = $role->users()->with('roles')->orderBy('created_at', 'asc')->first(); $permission = new BranchUser(); $permission->branch_id = $branch->id; $permission->user_id = $user->id; $permission->save(); //notify user Mail::raw("Default Branch permission has been assigned to you", function ($message) { $message->from(Setting::where('setting_key', 'company_email')->first()->setting_value, Setting::where('setting_key', 'company_name')->first()->setting_value); $message->to(Setting::where('setting_key', 'company_email')->first()->setting_value); $headers = $message->getHeaders(); $message->setContentType('text/html'); $message->setSubject("Branch permission assigned"); }); if (!empty(Setting::where('setting_key', 'company_email')->first())) { Mail::raw("Default Branch permission has been assigned to: " . $user->first_name . " " . $user->last_name, function ($message) { $message->from(Setting::where('setting_key', 'company_email')->first()->setting_value, Setting::where('setting_key', 'company_name')->first()->setting_value); $message->to(Setting::where('setting_key', 'company_email')->first()->setting_value); $headers = $message->getHeaders(); $message->setContentType('text/html'); $message->setSubject("Branch permission assigned"); }); } } else { //failed to assign default user, notify admin if (!empty(Setting::where('setting_key', 'company_email')->first())) { Mail::raw("Failed to assign branch permission to user", function ($message) { $message->from(Setting::where('setting_key', 'company_email')->first()->setting_value, Setting::where('setting_key', 'company_name')->first()->setting_value); $message->to(Setting::where('setting_key', 'company_email')->first()->setting_value); $headers = $message->getHeaders(); $message->setContentType('text/html'); $message->setSubject("Failed to assign branch permission"); }); } } } } Flash::success("Successfully fixed 1 records"); return redirect('dashboard'); } public function update_2_0() { Flash::success("Starting the update now:Step 1"); return redirect('update_2_0_1'); } public function update_2_0_1() { //fix schedules $count = 0; //first empty Journal Entries table JournalEntry::truncate(); LoanTransaction::truncate(); //import loan transactions and journals foreach (Loan::whereIn('loans.status', ['disbursed', 'closed', 'written_off', 'rescheduled'])->get() as $key) { //disbursement transaction $loan_transaction = new LoanTransaction(); $loan_transaction->user_id = $key->user_id; $loan_transaction->branch_id = $key->branch_id; $loan_transaction->loan_id = $key->id; $loan_transaction->borrower_id = $key->borrower_id; $loan_transaction->transaction_type = "disbursement"; $loan_transaction->date = $key->disbursed_date; $date = explode('-', $key->disbursed_date); $loan_transaction->year = $date[0]; $loan_transaction->month = $date[1]; $loan_transaction->debit = $key->principal; $loan_transaction->save(); if (!empty($key->loan_product)) { if (!empty($key->loan_product->chart_fund_source)) { $journal = new JournalEntry(); $journal->user_id = $key->user_id; $journal->account_id = $key->loan_product->chart_fund_source->id; $journal->branch_id = $key->branch_id; $journal->date = $key->disbursed_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'disbursement'; $journal->name = "Loan Disbursement"; $journal->loan_id = $key->id; $journal->credit = $key->principal; $journal->reference = $key->id; $journal->save(); } if (!empty($key->loan_product->chart_loan_portfolio)) { $journal = new JournalEntry(); $journal->user_id = $key->user_id; $journal->account_id = $key->loan_product->chart_loan_portfolio->id; $journal->branch_id = $key->branch_id; $journal->date = $key->disbursed_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'disbursement'; $journal->name = "Loan Disbursement"; $journal->loan_id = $key->id; $journal->debit = $key->principal; $journal->reference = $key->id; $journal->save(); } //interest transaction $interest = GeneralHelper::loan_total_interest($key->id); $loan_transaction = new LoanTransaction(); $loan_transaction->user_id = $key->user_id; $loan_transaction->branch_id = $key->branch_id; $loan_transaction->loan_id = $key->id; $loan_transaction->borrower_id = $key->borrower_id; $loan_transaction->transaction_type = "interest"; $loan_transaction->date = $key->disbursed_date; $date = explode('-', $key->disbursed_date); $loan_transaction->year = $date[0]; $loan_transaction->month = $date[1]; $loan_transaction->debit = $interest; $loan_transaction->save(); //fees transaction $fees = GeneralHelper::loan_total_fees($key->id); if ($key->loan_product->accounting_rule == "accrual_upfront") { //we need to save the accrued interest in journal here if (!empty($key->loan_product->chart_receivable_interest)) { $journal = new JournalEntry(); $journal->user_id = $key->user_id; $journal->account_id = $key->loan_product->chart_receivable_interest->id; $journal->branch_id = $key->branch_id; $journal->date = $key->disbursed_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'accrual'; $journal->name = "Accrued Interest"; $journal->loan_id = $key->id; $journal->debit = $interest; $journal->reference = $key->id; $journal->save(); } if (!empty($key->loan_product->chart_income_interest)) { $journal = new JournalEntry(); $journal->user_id = $key->user_id; $journal->account_id = $key->loan_product->chart_income_interest->id; $journal->branch_id = $key->branch_id; $journal->date = $key->disbursed_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'accrual'; $journal->name = "Accrued Interest"; $journal->loan_id = $key->id; $journal->credit = $interest; $journal->reference = $key->id; $journal->save(); } } } } Flash::success("Update in progress:Step 2"); return redirect('update_2_0_2'); } public function update_2_0_2() { //fix schedules $count = 0; //first empty Journal Entries table //import loan transactions and journals foreach (Loan::whereIn('loans.status', ['disbursed', 'closed', 'written_off', 'rescheduled'])->get() as $key) { //disbursement transaction $date = explode('-', $key->disbursed_date); if (!empty($key->loan_product)) { //check for schedules foreach (LoanSchedule::where('loan_id', $key->id)->get() as $schedule) { if ($schedule->fees>0) { $loan_transaction = new LoanTransaction(); $loan_transaction->user_id = $key->user_id; $loan_transaction->branch_id = $key->branch_id; $loan_transaction->loan_id = $key->id; $loan_transaction->borrower_id = $key->borrower_id; $loan_transaction->transaction_type = "specified_due_date_fee"; $loan_transaction->date = $schedule->due_date; $date = explode('-', $schedule->due_date); $loan_transaction->year = $date[0]; $loan_transaction->month = $date[1]; $loan_transaction->debit = $schedule->fees; $loan_transaction->reversible = 1; $loan_transaction->save(); } if ($schedule->penalty>0) { $loan_transaction = new LoanTransaction(); $loan_transaction->user_id = $key->user_id; $loan_transaction->branch_id =$key->branch_id; $loan_transaction->loan_id = $key->id; $loan_transaction->borrower_id = $key->borrower_id; $loan_transaction->transaction_type = "penalty"; $loan_transaction->date = $schedule->due_date; $date = explode('-', $schedule->due_date); $loan_transaction->year = $date[0]; $loan_transaction->month = $date[1]; $loan_transaction->debit = $schedule->fees; $loan_transaction->reversible = 1; $loan_transaction->save(); } //check for penalty } } } Flash::success("Update in progress:Step 3"); return redirect('update_2_0_3'); } public function update_2_0_3() { //fix schedules //import loan transactions and journals foreach (Loan::whereIn('loans.status', ['disbursed', 'closed', 'written_off', 'rescheduled'])->get() as $key) { //disbursement transaction if (!empty($key->loan_product)) { //payments foreach (LoanRepayment::where('loan_id', $key->id)->orderBy('collection_date','asc')->get() as $repayment) { if ($repayment->amount>0) { $loan_transaction = new LoanTransaction(); $loan_transaction->user_id = $key->user_id; $loan_transaction->branch_id = $key->branch_id; $loan_transaction->loan_id = $key->id; $loan_transaction->borrower_id = $key->borrower_id; $loan_transaction->transaction_type = "repayment"; $loan_transaction->date = $repayment->collection_date; $date = explode('-', $repayment->collection_date); $loan_transaction->year = $date[0]; $loan_transaction->month = $date[1]; $loan_transaction->repayment_method_id = $repayment->repayment_method_id; $loan_transaction->receipt = $repayment->receipt; $loan_transaction->notes = $repayment->notes; $loan_transaction->credit = $repayment->amount; $loan_transaction->reversible = 1; $loan_transaction->save(); //journal entries $allocation = GeneralHelper::loan_allocate_payment($loan_transaction); //principal if ($allocation['principal'] > 0) { if (!empty($key->loan_product->chart_loan_portfolio)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $key->loan_product->chart_loan_portfolio->id; $journal->branch_id = $key->branch_id; $journal->date = $repayment->collection_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'repayment'; $journal->transaction_sub_type = 'repayment_principal'; $journal->name = "Principal Repayment"; $journal->loan_id = $key->id; $journal->loan_transaction_id = $loan_transaction->id; $journal->credit = $allocation['principal']; $journal->reference = $loan_transaction->id; $journal->save(); } if (!empty($key->loan_product->chart_fund_source)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $key->loan_product->chart_fund_source->id; $journal->branch_id = $key->branch_id; $journal->date = $repayment->collection_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'repayment'; $journal->name = "Principal Repayment"; $journal->loan_id = $key->id; $journal->loan_transaction_id = $loan_transaction->id; $journal->debit = $allocation['principal']; $journal->reference = $loan_transaction->id; $journal->save(); } } //interest if ($allocation['interest'] > 0) { if (!empty($key->loan_product->chart_income_interest)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $key->loan_product->chart_income_interest->id; $journal->branch_id = $key->branch_id; $journal->date = $repayment->collection_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'repayment'; $journal->transaction_sub_type = 'repayment_interest'; $journal->name = "Interest Repayment"; $journal->loan_id = $key->id; $journal->loan_transaction_id = $loan_transaction->id; $journal->credit = $allocation['interest']; $journal->reference = $loan_transaction->id; $journal->save(); } if (!empty($key->loan_product->chart_receivable_interest)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $key->loan_product->chart_receivable_interest->id; $journal->branch_id = $key->branch_id; $journal->date = $repayment->collection_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'repayment'; $journal->name = "Interest Repayment"; $journal->loan_id = $key->id; $journal->loan_transaction_id = $loan_transaction->id; $journal->debit = $allocation['interest']; $journal->reference = $loan_transaction->id; $journal->save(); } } //fees if ($allocation['fees'] > 0) { if (!empty($key->loan_product->chart_income_fee)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $key->loan_product->chart_income_fee->id; $journal->branch_id = $key->branch_id; $journal->date = $repayment->collection_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'repayment'; $journal->transaction_sub_type = 'repayment_fees'; $journal->name = "Fees Repayment"; $journal->loan_id = $key->id; $journal->loan_transaction_id = $loan_transaction->id; $journal->credit = $allocation['fees']; $journal->reference = $loan_transaction->id; $journal->save(); } if (!empty($key->loan_product->chart_receivable_fee)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $key->loan_product->chart_receivable_fee->id; $journal->branch_id = $key->branch_id; $journal->date = $repayment->collection_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'repayment'; $journal->name = "Fees Repayment"; $journal->loan_id = $key->id; $journal->loan_transaction_id = $loan_transaction->id; $journal->debit = $allocation['fees']; $journal->reference = $loan_transaction->id; $journal->save(); } } if ($allocation['penalty'] > 0) { if (!empty($key->loan_product->chart_income_penalty)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $key->loan_product->chart_income_penalty->id; $journal->branch_id = $key->branch_id; $journal->date = $repayment->collection_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'repayment'; $journal->transaction_sub_type = 'repayment_penalty'; $journal->name = "Penalty Repayment"; $journal->loan_id = $key->id; $journal->loan_transaction_id = $loan_transaction->id; $journal->credit = $allocation['penalty']; $journal->reference = $loan_transaction->id; $journal->save(); } if (!empty($key->loan_product->chart_receivable_penalty)) { $journal = new JournalEntry(); $journal->user_id = Sentinel::getUser()->id; $journal->account_id = $key->loan_product->chart_receivable_penalty->id; $journal->branch_id = $key->branch_id; $journal->date = $repayment->collection_date; $journal->year = $date[0]; $journal->month = $date[1]; $journal->borrower_id = $key->borrower_id; $journal->transaction_type = 'repayment'; $journal->name = "Penalty Repayment"; $journal->loan_id = $key->id; $journal->loan_transaction_id = $loan_transaction->id; $journal->debit = $allocation['penalty']; $journal->reference = $loan_transaction->id; $journal->save(); } } } } } } Flash::success("Successfully updated records"); return redirect('dashboard'); } }