v5.0.0 update

This commit is contained in:
Mohit Panjwani
2021-11-30 18:58:19 +05:30
parent d332712c22
commit 082d5cacf2
1253 changed files with 88309 additions and 71741 deletions

View File

@ -0,0 +1,96 @@
<?php
namespace Crater\Http\Controllers\V1\Admin\Expense;
use Crater\Http\Controllers\Controller;
use Crater\Http\Requests\ExpenseCategoryRequest;
use Crater\Http\Resources\ExpenseCategoryResource;
use Crater\Models\ExpenseCategory;
use Illuminate\Http\Request;
class ExpenseCategoriesController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$this->authorize('viewAny', ExpenseCategory::class);
$limit = $request->has('limit') ? $request->limit : 5;
$categories = ExpenseCategory::applyFilters($request->all())
->whereCompany()
->latest()
->paginateData($limit);
return ExpenseCategoryResource::collection($categories);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(ExpenseCategoryRequest $request)
{
$this->authorize('create', ExpenseCategory::class);
$category = ExpenseCategory::create($request->getExpenseCategoryPayload());
return new ExpenseCategoryResource($category);
}
/**
* Display the specified resource.
*
* @param \Crater\Models\ExpenseCategory $category
* @return \Illuminate\Http\Response
*/
public function show(ExpenseCategory $category)
{
$this->authorize('view', $category);
return new ExpenseCategoryResource($category);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \Crater\Models\ExpenseCategory $ExpenseCategory
* @return \Illuminate\Http\Response
*/
public function update(ExpenseCategoryRequest $request, ExpenseCategory $category)
{
$this->authorize('update', $category);
$category->update($request->getExpenseCategoryPayload());
return new ExpenseCategoryResource($category);
}
/**
* Remove the specified resource from storage.
*
* @param \Crater\ExpensesCategory $category
* @return \Illuminate\Http\Response
*/
public function destroy(ExpenseCategory $category)
{
$this->authorize('delete', $category);
if ($category->expenses() && $category->expenses()->count() > 0) {
return respondJson('expense_attached', 'Expense Attached');
}
$category->delete();
return response()->json([
'success' => true,
]);
}
}

View File

@ -0,0 +1,93 @@
<?php
namespace Crater\Http\Controllers\V1\Admin\Expense;
use Crater\Http\Controllers\Controller;
use Crater\Http\Requests\DeleteExpensesRequest;
use Crater\Http\Requests\ExpenseRequest;
use Crater\Http\Resources\ExpenseResource;
use Crater\Models\Expense;
use Illuminate\Http\Request;
class ExpensesController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\JsonResponse
*/
public function index(Request $request)
{
$this->authorize('viewAny', Expense::class);
$limit = $request->has('limit') ? $request->limit : 10;
$expenses = Expense::with('category', 'creator', 'fields')
->whereCompany()
->leftJoin('customers', 'customers.id', '=', 'expenses.customer_id')
->join('expense_categories', 'expense_categories.id', '=', 'expenses.expense_category_id')
->applyFilters($request->all())
->select('expenses.*', 'expense_categories.name', 'customers.name as user_name')
->paginateData($limit);
return (ExpenseResource::collection($expenses))
->additional(['meta' => [
'expense_total_count' => Expense::whereCompany()->count(),
]]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function store(ExpenseRequest $request)
{
$this->authorize('create', Expense::class);
$expense = Expense::createExpense($request);
return new ExpenseResource($expense);
}
/**
* Display the specified resource.
*
* @param \Crater\Models\Expense $expense
* @return \Illuminate\Http\JsonResponse
*/
public function show(Expense $expense)
{
$this->authorize('view', $expense);
return new ExpenseResource($expense);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \Crater\Models\Expense $expense
* @return \Illuminate\Http\JsonResponse
*/
public function update(ExpenseRequest $request, Expense $expense)
{
$this->authorize('update', $expense);
$expense->updateExpense($request);
return new ExpenseResource($expense);
}
public function delete(DeleteExpensesRequest $request)
{
$this->authorize('delete multiple expenses');
Expense::destroy($request->ids);
return response()->json([
'success' => true,
]);
}
}

View File

@ -0,0 +1,30 @@
<?php
namespace Crater\Http\Controllers\V1\Admin\Expense;
use Crater\Http\Controllers\Controller;
use Crater\Models\Expense;
class ShowReceiptController extends Controller
{
/**
* Retrieve details of an expense receipt from storage.
*
* @param \Crater\Models\Expense $expense
* @return \Illuminate\Http\JsonResponse
*/
public function __invoke(Expense $expense)
{
$this->authorize('view', $expense);
if ($expense) {
$media = $expense->getFirstMedia('receipts');
if ($media) {
return response()->file($media->getPath());
}
return respondJson('receipt_does_not_exist', 'Receipt does not exist.');
}
}
}

View File

@ -0,0 +1,38 @@
<?php
namespace Crater\Http\Controllers\V1\Admin\Expense;
use Crater\Http\Controllers\Controller;
use Crater\Models\Expense;
use Illuminate\Http\Request;
class UploadReceiptController extends Controller
{
/**
* Upload the expense receipts to storage.
*
* @param \Illuminate\Http\Request $request
* @param Expense $expense
* @return \Illuminate\Http\JsonResponse
*/
public function __invoke(Request $request, Expense $expense)
{
$this->authorize('update', $expense);
$data = json_decode($request->attachment_receipt);
if ($data) {
if ($request->type === 'edit') {
$expense->clearMediaCollection('receipts');
}
$expense->addMediaFromBase64($data->data)
->usingFileName($data->name)
->toMediaCollection('receipts');
}
return response()->json([
'success' => 'Expense receipts uploaded successfully',
], 200);
}
}