add user to expense

This commit is contained in:
jayvirsinh_gohil
2020-03-18 17:40:03 +05:30
parent c72265ed50
commit bc99ad63a6
4 changed files with 37 additions and 1 deletions

View File

@ -5,6 +5,7 @@ use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia\HasMedia; use Spatie\MediaLibrary\HasMedia\HasMedia;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait; use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
use Crater\ExpenseCategory; use Crater\ExpenseCategory;
use Crater\User;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -16,6 +17,7 @@ class Expense extends Model implements HasMedia
'expense_category_id', 'expense_category_id',
'amount', 'amount',
'company_id', 'company_id',
'user_id',
'expense_date', 'expense_date',
'notes', 'notes',
'attachment_receipt' 'attachment_receipt'
@ -32,6 +34,11 @@ class Expense extends Model implements HasMedia
return $this->belongsTo(ExpenseCategory::class, 'expense_category_id'); return $this->belongsTo(ExpenseCategory::class, 'expense_category_id');
} }
public function user()
{
return $this->belongsTo(User::class);
}
public function getFormattedExpenseDateAttribute($value) public function getFormattedExpenseDateAttribute($value)
{ {
$dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id); $dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id);
@ -81,6 +88,11 @@ class Expense extends Model implements HasMedia
return $query->where('expenses.expense_category_id', $categoryId); return $query->where('expenses.expense_category_id', $categoryId);
} }
public function scopeWhereUser($query, $user_id)
{
return $query->where('expenses.user_id', $user_id);
}
public function scopeApplyFilters($query, array $filters) public function scopeApplyFilters($query, array $filters)
{ {
$filters = collect($filters); $filters = collect($filters);
@ -89,6 +101,10 @@ class Expense extends Model implements HasMedia
$query->whereCategory($filters->get('expense_category_id')); $query->whereCategory($filters->get('expense_category_id'));
} }
if ($filters->get('user_id')) {
$query->whereUser($filters->get('user_id'));
}
if ($filters->get('from_date') && $filters->get('to_date')) { if ($filters->get('from_date') && $filters->get('to_date')) {
$start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date')); $start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date'));
$end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date')); $end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date'));

View File

@ -24,9 +24,11 @@ class ExpensesController extends Controller
$limit = $request->has('limit') ? $request->limit : 10; $limit = $request->has('limit') ? $request->limit : 10;
$expenses = Expense::with('category') $expenses = Expense::with('category')
->join('users', 'users.id', '=', 'expenses.user_id')
->join('expense_categories', 'expense_categories.id', '=', 'expenses.expense_category_id') ->join('expense_categories', 'expense_categories.id', '=', 'expenses.expense_category_id')
->applyFilters($request->only([ ->applyFilters($request->only([
'expense_category_id', 'expense_category_id',
'user_id',
'search', 'search',
'from_date', 'from_date',
'to_date', 'to_date',
@ -34,7 +36,7 @@ class ExpensesController extends Controller
'orderBy' 'orderBy'
])) ]))
->whereCompany($request->header('company')) ->whereCompany($request->header('company'))
->select('expenses.*', 'expense_categories.name') ->select('expenses.*', 'expense_categories.name', 'users.name as user_name')
->paginate($limit); ->paginate($limit);
return response()->json([ return response()->json([
@ -76,6 +78,11 @@ class ExpensesController extends Controller
$expense = new Expense(); $expense = new Expense();
$expense->notes = $request->notes; $expense->notes = $request->notes;
$expense->expense_category_id = $request->expense_category_id; $expense->expense_category_id = $request->expense_category_id;
if ($request->has('user_id') && $request->user_id != null) {
$expense->user_id = $request->user_id;
}
$expense->amount = $request->amount; $expense->amount = $request->amount;
$expense->company_id = $request->header('company'); $expense->company_id = $request->header('company');
$expense->expense_date = $expense_date; $expense->expense_date = $expense_date;
@ -138,6 +145,11 @@ class ExpensesController extends Controller
$expense->notes = $request->notes; $expense->notes = $request->notes;
$expense->expense_category_id = $request->expense_category_id; $expense->expense_category_id = $request->expense_category_id;
$expense->amount = $request->amount; $expense->amount = $request->amount;
if ($request->has('user_id') && $request->user_id != null) {
$expense->user_id = $request->user_id;
}
$expense->expense_date = $expense_date; $expense->expense_date = $expense_date;
$expense->save(); $expense->save();

View File

@ -9,6 +9,7 @@ use carbon\carbon;
use Crater\MemberLoan; use Crater\MemberLoan;
use Crater\Address; use Crater\Address;
use Crater\Payment; use Crater\Payment;
use Crater\Expense;
use Crater\Company; use Crater\Company;
use Crater\Notifications\MailResetPasswordNotification; use Crater\Notifications\MailResetPasswordNotification;
use Spatie\MediaLibrary\HasMedia\HasMedia; use Spatie\MediaLibrary\HasMedia\HasMedia;
@ -105,6 +106,11 @@ class User extends Authenticatable implements HasMedia
return $this->hasMany(Address::class); return $this->hasMany(Address::class);
} }
public function expenses()
{
return $this->hasMany(Expense::class);
}
public function billingAddress() public function billingAddress()
{ {
return $this->hasOne(Address::class)->where('type', Address::BILLING_TYPE); return $this->hasOne(Address::class)->where('type', Address::BILLING_TYPE);

View File

@ -23,6 +23,8 @@ class CreateExpensesTable extends Migration
$table->foreign('expense_category_id')->references('id')->on('expense_categories')->onDelete('cascade'); $table->foreign('expense_category_id')->references('id')->on('expense_categories')->onDelete('cascade');
$table->integer('company_id')->unsigned()->nullable(); $table->integer('company_id')->unsigned()->nullable();
$table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade'); $table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade');
$table->integer('user_id')->unsigned()->nullable();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->timestamps(); $table->timestamps();
}); });
} }