bug fixes, senderID polishing, support fees, paperless partial

This commit is contained in:
Kwesi Banson
2024-07-02 09:25:00 +00:00
parent 318fddbff0
commit edb78d1bfc
116 changed files with 1488 additions and 368 deletions

BIN
app/.DS_Store vendored

Binary file not shown.

BIN
app/Http/.DS_Store vendored

Binary file not shown.

Binary file not shown.

View File

@@ -380,6 +380,47 @@ class ClientsController extends Controller
$this->logUsersActivity($type = 'staff', $content);
return response()->json($data, 200);
}
public function supportFeesStore(Request $request){
$request->validate([
'client_id' => 'required',
'services' => 'required',
'invoice_number' => 'required',
// 'invoice_amount' => 'required|numeric',
'invoice_date' => 'required',
'status' => 'required',
'recurring' => 'required'
]);
$auth_user = session('current_user');
// dd($request->all());
$support_fees_arr = [
'invoice_number' => $request->invoice_number,
'recurring' => $request->recurring,
'invoice_date' => $request->invoice_date,
'invoice_status' => $request->status,
'services' => implode(',', $request->services),
'user_id' => $auth_user['id'],
'status' => $request->status,
'client_id' => $request->client_id
];
if ($request->has('remarks')) {
$support_fees_arr['remarks'] = $request->remarks;
}
$result = Models\ClientSupportFees::create($support_fees_arr);
#$payments = Models\ClientPayment::with('client_info', 'created_by_info')->find($result->id);
if ($result) {
$data = ['code' => 1, 'msg' => 'Support Fees Details successfully added'];
}
else{
$data = ['code' => 3, 'msg' => 'Your request could not be handled at this time'];
}
$user_id = session('current_user.id');
$username = session('current_user.name');
$content = "User ID : " . $user_id . " (" . $username . ") Added a support fees record";
$this->logUsersActivity($type = 'staff', $content);
return response()->json($data, 200);
}
public function shortcodeStore(Request $request)
{
$request->validate([
@@ -591,6 +632,7 @@ class ClientsController extends Controller
$recent_payments = Models\ClientPayment::where('client_id', $id)->orderBy('id', 'DESC')->get();
$countries = Models\Country::pluck('en_short_name','en_short_name');
$networks = Models\NetworkOps::pluck('name', 'id');
$support_fees = Models\ClientSupportFees::where('client_id', $id)->orderBy('id', 'DESC')->get();
$showdocuments = Models\ClientFile::where('client_id', $id)->get();
if ($showclient->status == 'Live') {
@@ -659,7 +701,7 @@ class ClientsController extends Controller
}
sort($networks_raw);
$recurring_arr = ['NO' => 'NO', 'Monthly' => 'Monthly', 'Quarterly' => 'Quarterly', 'Semiannual' => 'Semiannual', 'Yearly' => 'Yearly'];
$data = [
'page_title' => 'Client Profile',
@@ -680,7 +722,9 @@ class ClientsController extends Controller
'renewal_due' => $renewal_due,
'recent_payments' => $recent_payments,
'highlight_colour' => $highlight_colour,
'showdocuments' => $showdocuments
'showdocuments' => $showdocuments,
'support_fees' => $support_fees,
'recurring_arr' => $recurring_arr
];
return view('client.show', $data);
}
@@ -850,7 +894,6 @@ class ClientsController extends Controller
{
$client = Models\Client::find($id);
$service_type = Models\Service::orderBy('name', 'ASC')->pluck('name', 'name');
$countries = Models\Country::orderBy('en_short_name', 'ASC')->pluck('en_short_name','en_short_name');
$payment_type = ['Prepaid' => 'Prepaid', 'Postpaid' => 'Postpaid']; // Models\PaymentType::pluck('name', 'id')->toArray();
@@ -878,7 +921,6 @@ class ClientsController extends Controller
$onboarding_sub_items = Models\ClientOnboardingSubItem::where('stage_id', $stage_details->stage_id)->pluck('name', 'name');
}
/*
else{
@@ -890,10 +932,7 @@ class ClientsController extends Controller
}
*/
$how_we_got_clients_arr = ['Event : (GCCM) etc' => 'Event : (GCCM) etc', 'Referral' => 'Referral', 'Word of Mouth' => 'Word of Mouth', 'Marketing' => 'Marketing', 'Other' => 'Other'];
// 'current_services' => json_decode($client->services, true);
if ($client->support_emails) {
$support_emails = json_decode($client->support_emails, true);
$support_emails = array_combine($support_emails, $support_emails);

View File

@@ -83,4 +83,92 @@ class Controller extends BaseController
}
return true;
}
public function sendToPaperless($file_path, $tags_arr, $created_at, $document_type, $title, $correspondent){
$dir = getcwd();
$prod_url = "http://206.225.84.201:8000/api/documents/post_document/";
$local_url = "http://192.168.68.152:8000/api/documents/post_document/";
// dd($ip);
if ($dir !== '/Users/kwesibanson/Sites/team_tracker') {
$url = $prod_url;
$auth = "";
}
else{
$url = $local_url;
$auth = "cGxhZG1pbjpCcmFuY2gyMDAw";
}
// $pop = new \CURLFILE('/Users/kwesibanson/Documents/36-PropertyBillsRegister-2019.pdf');
// $curl_file = new \CURLFILE(public_path('documents/ultra_host.pdf'));
$curl_file = new \CURLFILE(public_path($file_path));
$curl = curl_init();
$data = [
"document" => $curl_file,
'title' => $title,
'correspondent' => $correspondent,
'created' => $created_at,
'document_type' => $document_type
];
if (count($tags_arr) > 0) {
foreach ($tags_arr as $tag) {
$data['tags'] = $tag;
}
}
// dd($data);
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $data, //['document' => $curl_file],
// CURLOPT_POSTFIELDS => array('document'=> new CURLFILE('/Users/kwesibanson/Documents/36-PropertyBillsRegister-2019.pdf')),
CURLOPT_HTTPHEADER => array(': ', 'Authorization: Basic ' . $auth),
));
$response = curl_exec($curl);
// print_r(curl_getinfo($ch));
// dump(curl_errno($curl));
// dump(curl_error($curl));
curl_close($curl);
return $response;
}
public function getToPaperlessParamValues($name){
// $name = "document_types/";
$dir = getcwd();
$prod_url = "http://206.225.84.201:8000/api/$name/";
$local_url = "http://192.168.68.152:8000/api/$name/";
// dd($ip);
if ($dir !== '/Users/kwesibanson/Sites/team_tracker') {
$url = $prod_url;
$auth = "";
}
else{
$url = $local_url;
$auth = "cGxhZG1pbjpCcmFuY2gyMDAw";
}
// $pop = new \CURLFILE('/Users/kwesibanson/Documents/36-PropertyBillsRegister-2019.pdf');
// $curl_file = new \CURLFILE(public_path('documents/ultra_host.pdf'));
// dd($data);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(': ', 'Authorization: Basic ' . $auth),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
}

View File

@@ -26,7 +26,7 @@ class GeneralDocumentsController extends Controller
->select(\DB::raw('count(*) as docs_count, network_operators.name, mno_files.mno_id'))
->groupBy('network_operators.name', 'mno_files.mno_id')
->get();
$category_names = [
'api' => 'API Documents',
'presentations' => 'Presentations',
@@ -62,7 +62,7 @@ class GeneralDocumentsController extends Controller
{
#$this->log_query();
$document_arr = \DB::table('general_documents')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->select('general_documents.id', 'general_documents.name', 'general_documents.filename', 'auth_users.name AS UploadedBy', 'general_documents.created_at')
->orderBy('general_documents.name', 'ASC')
->paginate(15);
@@ -70,12 +70,12 @@ class GeneralDocumentsController extends Controller
if($request->has('keyword')){
$keyword = $request->keyword;
$document_arr = \DB::table('general_documents')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->select('general_documents.id', 'general_documents.name', 'general_documents.filename', 'auth_users.name AS UploadedBy', 'general_documents.created_at')
->orderBy('general_documents.name', 'ASC')
->whereRaw("general_documents.name LIKE '%$keyword%' OR general_documents.description LIKE '%$keyword%' OR general_documents.filename LIKE '%$keyword%' OR auth_users.name LIKE '%$keyword%'")
->paginate(15);
}
->paginate(15);
}
return response()->json($document_arr);
}
public function getDocumentsCategoryJson(Request $request)
@@ -83,7 +83,7 @@ class GeneralDocumentsController extends Controller
//$this->log_query();
$category = $request->category;
$document_arr = \DB::table('general_documents')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->select('general_documents.id', 'general_documents.name', 'general_documents.filename', 'auth_users.name AS UploadedBy', 'general_documents.created_at')
->where('general_documents.category', $category)
->orderBy('general_documents.name', 'ASC')
@@ -92,31 +92,30 @@ class GeneralDocumentsController extends Controller
if($request->has('keyword')){
$keyword = $request->keyword;
$document_arr = \DB::table('general_documents')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->select('general_documents.id', 'general_documents.name', 'general_documents.filename', 'auth_users.name AS UploadedBy', 'general_documents.created_at')
->orderBy('general_documents.name', 'ASC')
->where('general_documents.category', $category)
->whereRaw("general_documents.name LIKE '%$keyword%' OR general_documents.description LIKE '%$keyword%' OR general_documents.filename LIKE '%$keyword%' OR auth_users.name LIKE '%$keyword%'")
->paginate(15);
}
->paginate(15);
}
return response()->json($document_arr);
}
public function create()
{
public function create(){
$categories = [
'sidwl' => 'Sender ID Whitelisting Letter',
'api' => 'API Docs',
'rates' => 'Rates',
'scfees' => 'Short Code Fees',
'presentations' => 'presentations',
'sidwl' => 'Sender ID Whitelisting Letter',
'api' => 'API Docs',
'rates' => 'Rates',
'scfees' => 'Short Code Fees',
'presentations' => 'presentations',
'vpn_forms' => 'VPN Forms',
'user_guides' => 'User Guides',
'others' => 'Others'
];
];
$data = [
'page_title' => 'Upload Document',
'categories' => $categories
'page_title' => 'Upload Document',
'categories' => $categories
];
return view('generaldocuments.create', $data);
}
@@ -126,16 +125,27 @@ class GeneralDocumentsController extends Controller
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Requests\GeneralDocumentsRequest $request)
{
public function store(Requests\GeneralDocumentsRequest $request){
// dd($request->all());
if ($request->has('document_one') && $request->has('document_one_name') && $request->has('document_one_category')) {
if ($request->file('document_one')->isValid()) {
$filename = "erp_" . time() . str_random(6) . "." . $request->document_one->extension();
//dd($request->all());
$filename = "erp_" . time() . str_random(6) . "." . $request->document_one->extension();
$request->document_one->storeAs('general_files', $filename, 'public');
$document_arr['filename'] = $filename;
$document_arr['category'] = $request->document_one_category;
# set parameters and push to paperless
$file_path = "documents/general_files/" . $filename; //"documents/oasl.pdf";
$tags_arr = [1,2];
$created_at = date('Y-m-d H:i:s');
$document_type = 1;
$correspondent = 1;
$title = $request->document_one_name;
$retval_paperless = $this->sendToPaperless($file_path, $tags_arr, $created_at, $document_type, $title, $correspondent);
\Log::info($retval_paperless);
$document_arr['file_extension'] = $request->document_one->extension();
$document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = $request->document_one_name;
@@ -145,11 +155,11 @@ class GeneralDocumentsController extends Controller
}
if ($request->has('document_two') && $request->has('document_two_name') && $request->has('document_two_category')) {
if ($request->file('document_two')->isValid()) {
$filename = "erp_" . time() . str_random(6) . "." . $request->document_two->extension();
$filename = "erp_" . time() . str_random(6) . "." . $request->document_two->extension();
$request->document_two->storeAs('general_files', $filename, 'public');
$document_arr['filename'] = $filename;
$document_arr['category'] = $request->document_two_category;
$document_arr['file_extension'] = $request->document_two->extension();
$document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = $request->document_two_name;
@@ -159,28 +169,27 @@ class GeneralDocumentsController extends Controller
}
if ($request->has('document_three') && $request->has('document_three_name') && $request->has('document_three_category')) {
if ($request->file('document_three')->isValid()) {
$filename = "erp_" . time() . str_random(6) . "." . $request->document_three->extension();
$filename = "erp_" . time() . str_random(6) . "." . $request->document_three->extension();
$request->document_three->storeAs('general_files', $filename, 'public');
$document_arr['filename'] = $filename;
$document_arr['category'] = $request->document_three_category;
$document_arr['file_extension'] = $request->document_three->extension();
$document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = $request->document_three_name;
$document_arr['uploaded_by'] = session('current_user.id');
$result = Models\GeneralDocument::create($document_arr);
}
}
}
Session::flash('success_message', 'Document(s) successfully uploaded');
return redirect(url('generaldocuments'));
}
public function storeBak(Request $request)
{
public function storeBak(Request $request){
$request->validate([
'file' => 'required|mimes:csv,txt,xlx,xls,pdf|max:2048'
]);
$fileName = time().'.'.$request->file->extension();
$fileName = time().'.'.$request->file->extension();
$request->file->move(public_path('uploads'), $fileName);
@@ -195,8 +204,7 @@ class GeneralDocumentsController extends Controller
];
return view('generaldocuments.edit', $data);
}
public function update(Request $request, $id)
{
public function update(Request $request, $id){
$document = Models\GeneralDocument::findOrFail($id);
if ($request->has('document_one')) {
if ($request->file('document_one')->isValid()) {
@@ -204,7 +212,7 @@ class GeneralDocumentsController extends Controller
$request->document_one->storeAs('general_files', $filename, 'public');
$document->filename = $filename;
$document->file_extension = $request->document_one->extension();
$document->file_reff = time() . uniqid();
$document->file_reff = time() . uniqid();
}
}
$document->uploaded_by = session('current_user.id');
@@ -213,15 +221,14 @@ class GeneralDocumentsController extends Controller
Session::flash('success_message', 'Document successfully Updated');
return redirect(url('generaldocuments'));
}
public function getDocument($id)
{
public function getDocument($id){
$general_file = Models\GeneralDocument::find($id);
if (!$general_file) {
return redirect(url('generaldocuments'));
}
//PDF file is stored under project/public/download/info.pdf
$file = public_path('documents/general_files/') . $general_file->filename;
$headers = []; //['Content-Type: application/pdf'];
$filename = $general_file->name; // . "_" . $general_file->file_reff;
$filename = $this->cleanStr($filename);
@@ -236,7 +243,29 @@ class GeneralDocumentsController extends Controller
$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string);
// Replaces multiple hyphens with single one.
$string = preg_replace('/-+/', '_', $string);
return $string;
}
public function getDocumentCorrespondent($category){
switch ($category) {
case 'sidwl':
// code...
break;
case 'api':
// code...
break;
case 'scfees':
// code...
break;
case 'presentations':
// code...
break;
case 'others':
// code...
break;
default:
// code...
break;
}
}
}

View File

@@ -66,13 +66,12 @@ class NetworkOperatorsController extends Controller
// dd($data);
return view('network_ops.index', $data);
}
public function getMnosJson(Request $request)
{
public function getMnosJson(Request $request){
//$this->log_query();
$mno_arr = \DB::table('network_operators')
->join('staff_members AS staffam', 'staffam.id', '=', 'network_operators.account_manager_id')
->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'network_operators.last_modified_by')
->select('network_operators.id', 'staffam.name AS accountManager', 'network_operators.name AS networkName', 'network_operators.country', 'network_operators.connection_status', 'staffmodify.name AS modifiedBy')
->select('network_operators.id', 'staffam.name AS accountManager', 'network_operators.name AS networkName', 'network_operators.country','network_operators.contract_validity', 'network_operators.connection_status', 'staffmodify.name AS modifiedBy')
->orderBy('network_operators.name', 'ASC')
->paginate(15);
@@ -81,7 +80,7 @@ class NetworkOperatorsController extends Controller
$mno_arr = \DB::table('network_operators')
->join('staff_members AS staffam', 'staffam.id', '=', 'network_operators.account_manager_id')
->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'network_operators.last_modified_by')
->select('network_operators.id', 'staffam.name AS accountManager', 'network_operators.name AS networkName', 'network_operators.country', 'network_operators.connection_status', 'staffmodify.name AS modifiedBy')
->select('network_operators.id', 'staffam.name AS accountManager', 'network_operators.name AS networkName', 'network_operators.country','network_operators.contract_validity', 'network_operators.connection_status', 'staffmodify.name AS modifiedBy')
->whereRaw("network_operators.name LIKE '%$keyword%' OR network_operators.connection_status LIKE '%$keyword%' OR network_operators.country LIKE '%$keyword%' OR staffam.name LIKE '%$keyword%' ")
->orderBy('network_operators.name', 'ASC')
->paginate(15);
@@ -94,8 +93,7 @@ class NetworkOperatorsController extends Controller
*
* @return \Illuminate\Http\Response
*/
public function create()
{
public function create() {
$countries = Models\Country::pluck('en_short_name','en_short_name');
$account_manager = Models\SystemUser::pluck('name', 'id');
$services = Models\Service::pluck('name', 'name');
@@ -117,8 +115,7 @@ class NetworkOperatorsController extends Controller
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
public function store(Request $request){
$request->validate([
'name' => 'required',
'country' => 'required',
@@ -166,10 +163,10 @@ class NetworkOperatorsController extends Controller
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
public function show($id){
//$operator_arr = Models\NetworkOps::findOrFail($id);
$network_arr = Models\NetworkOps::with('account_manager_info')->findOrFail($id);
// dd($network_arr);
$countries = Models\Country::orderBy('en_short_name')->pluck('en_short_name','en_short_name');
$account_manager = Models\SystemUser::orderBy('name')->pluck('name', 'id');
$services = Models\Service::orderBy('name')->pluck('name', 'name');
@@ -270,8 +267,7 @@ class NetworkOperatorsController extends Controller
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
public function edit($id){
$network_arr = Models\NetworkOps::findOrFail($id);
$countries = Models\Country::orderBy('en_short_name')->pluck('en_short_name','en_short_name');
$account_manager = Models\SystemUser::orderBy('name')->pluck('name', 'id');
@@ -338,6 +334,7 @@ class NetworkOperatorsController extends Controller
else{
$status_bg = "danger";
}
$rate_types = ['flat_rate' => 'Flat Rate', 'sliding' => 'Sliding Scale'];
$data = [
'page_title' => 'Edit Network Operator',
'network_arr' => $network_arr,
@@ -356,6 +353,7 @@ class NetworkOperatorsController extends Controller
'status_bg' => $status_bg,
'connection_types' => $connection_types,
'old_connection_type' => $old_connection_type,
'rate_types' => $rate_types,
'ip_addresses' => $ip_addresses,
'notes_arr' => $notes_arr,
'recent_payments' => $recent_payments,
@@ -404,7 +402,25 @@ class NetworkOperatorsController extends Controller
$result = Models\MnoFile::create($document_arr);
}
}
if ($request->has('sliding_rate_file') && $request->has('sliding_rate_file')) {
if ($request->file('sliding_rate_file')->isValid()) {
$filename = "erp_" . time() . "_sliding_rate." . $request->sliding_rate_file->extension();
$request->sliding_rate_file->storeAs('mno_files', $filename, 'public');
$document_arr['file_path'] = $filename;
// $operator_update->name = $request->name;
$document_arr['file_extension'] = $request->sliding_rate_file->extension();
$document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = "Sliding Scale Rate File";
$document_arr['created_by'] = session('current_user.id');
$document_arr['mno_id'] = $id;
$result = Models\MnoFile::create($document_arr);
$operator_update->sliding_rate_file = $filename;
}
}
if ($request->rate_type == 'flat_rate') {
$operator_update->buying_rate = $request->buying_rate;
}
$operator_update->name = $request->name;
$operator_update->country = $request->country;
@@ -435,14 +451,13 @@ class NetworkOperatorsController extends Controller
$operator_update->support_phones = ($request->support_phones) ? json_encode($request->support_phones) : "";
$operator_update->support_skype = ($request->support_skype) ? json_encode($request->support_skype) : "";
$operator_update->rate_type = $request->rate_type;
$result = $operator_update->save();
Session::flash('success_message', 'Network Operator successfully Updated');
return redirect(url('mnos'));
}
public function ipStore(Request $request)
{
public function ipStore(Request $request) {
$request->validate([
'mno_id' => 'required',
'ip_address' => 'required|ipv4',

View File

@@ -40,6 +40,25 @@ class UtilityController extends Controller
public function ntfyTest(){
$this->sendNtfy('In the ERP');
}
public function paperlessTest(){
$file_path = "documents/oasl.pdf";
$tags_arr = [1,2];
$created_at = date('Y-m-d H:i:s');
$document_type = 1;
$title = "OASL has entered the chat";
$top = $this->sendToPaperless($file_path, $tags_arr, $created_at, $document_type, $title);
dd($top);
}
function getPaperlessAttributes($name){
$retval = $this->getToPaperlessParamValues($name);
// dd($retval['results']);
$tip = json_decode($retval);
foreach ($tip->results as $value) {
dd($value);
}
dd($tip->results);
}
function insertOnboardingProgress(){
$all_clients = Models\Client::get();
$count_cl = 0;

View File

@@ -21,6 +21,7 @@ class UpdateMnoRequest extends FormRequest
'document_one.max' => 'The uploaded file may not be larger than 20MB.',
'document_two.mimes' => 'The uploaded file must be a PDF, An MS Word Document or An Image.',
'document_two.max' => 'The uploaded file may not be larger than 20MB.',
'sliding_rate_file.max' => 'The Sliding Rate file may not be larger than 10MB.',
];
}
/**
@@ -42,6 +43,7 @@ class UpdateMnoRequest extends FormRequest
'contract_validity' => 'required',
'document_one' => 'max:20480|mimes:png,jpg,jpeg,bmp,pdf,doc,docx,xlx,xlsx',
'document_two' => 'max:20480|mimes:png,jpg,jpeg,bmp,pdf,doc,docx,xlx,xlsx',
'sliding_rate_file' => 'max:10240|mimes:png,jpg,jpeg,bmp,pdf,doc,docx,xlx,xlsx',
];
}

BIN
app/Models/.DS_Store vendored

Binary file not shown.

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientSupportFees extends Model
{
protected $guarded = array('id');
public $table = "client_support_fees";
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
public function created_by_info(){
// return $this->hasOne('App\Models\Account', 'id', 'auth_user_id');
return $this->hasOne('App\Models\SystemUser', 'id', 'auth_user_id');
}
}