first commit

This commit is contained in:
denisdulici
2017-09-14 22:21:00 +03:00
commit 515bdaf5cd
598 changed files with 48030 additions and 0 deletions

View File

@ -0,0 +1,125 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Http\Requests\Setting\Category as Request;
use App\Models\Setting\Category;
class Categories extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$categories = Category::collect();
$types = collect(['expense' => 'Expense', 'income' => 'Income', 'item' => 'Item', 'other' => 'Other'])
->prepend(trans('categories.all_types'), '');
return view('settings.categories.index', compact('categories', 'types'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
return view('settings.categories.create');
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
*
* @return Response
*/
public function store(Request $request)
{
Category::create($request->all());
$message = trans('messages.success.added', ['type' => trans_choice('general.categories', 1)]);
flash($message)->success();
return redirect('settings/categories');
}
/**
* Show the form for editing the specified resource.
*
* @param Category $category
*
* @return Response
*/
public function edit(Category $category)
{
return view('settings.categories.edit', compact('category'));
}
/**
* Update the specified resource in storage.
*
* @param Category $category
* @param Request $request
*
* @return Response
*/
public function update(Category $category, Request $request)
{
$category->update($request->all());
$message = trans('messages.success.updated', ['type' => trans_choice('general.categories', 1)]);
flash($message)->success();
return redirect('settings/categories');
}
/**
* Remove the specified resource from storage.
*
* @param Category $category
*
* @return Response
*/
public function destroy(Category $category)
{
$canDelete = $category->canDelete();
if ($canDelete === true) {
$category->delete();
$message = trans('messages.success.deleted', ['type' => trans_choice('general.categories', 1)]);
flash($message)->success();
} else {
$text = array();
if (isset($canDelete['items'])) {
$text[] = '<b>' . $canDelete['items'] . '</b> ' . trans_choice('general.items', ($canDelete['items'] > 1) ? 2 : 1);
}
if (isset($canDelete['payments'])) {
$text[] = '<b>' . $canDelete['payments'] . '</b> ' . trans_choice('general.payments', ($canDelete['payments'] > 1) ? 2 : 1);
}
if (isset($canDelete['revenues'])) {
$text[] = '<b>' . $canDelete['revenues'] . '</b> ' . trans_choice('general.items', ($canDelete['revenues'] > 1) ? 2 : 1);
}
$message = trans('messages.warning.deleted', ['type' => trans_choice('general.categories', 1), 'text' => implode(', ', $text)]);
flash($message)->warning();
}
return redirect('settings/categories');
}
}

View File

@ -0,0 +1,146 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Http\Requests\Setting\Currency as Request;
use App\Models\Banking\Account;
use App\Models\Setting\Currency;
use ClickNow\Money\Currency as MoneyCurrency;
class Currencies extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$currencies = Currency::collect();
return view('settings.currencies.index', compact('currencies', 'codes', 'rates'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
// Prepare codes
$codes = array();
$currencies = MoneyCurrency::getCurrencies();
foreach ($currencies as $key => $item) {
$codes[$key] = $key;
}
return view('settings.currencies.create', compact('codes'));
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
*
* @return Response
*/
public function store(Request $request)
{
Currency::create($request->all());
// Update default currency setting
if ($request['default_currency']) {
setting()->set('general.default_currency', $request['code']);
setting()->save();
}
$message = trans('messages.success.added', ['type' => trans_choice('general.currencies', 1)]);
flash($message)->success();
return redirect('settings/currencies');
}
/**
* Show the form for editing the specified resource.
*
* @param Currency $currency
*
* @return Response
*/
public function edit(Currency $currency)
{
// Prepare codes
$codes = array();
$currencies = MoneyCurrency::getCurrencies();
foreach ($currencies as $key => $item) {
$codes[$key] = $key;
}
// Set default currency
$currency->default_currency = ($currency->code == setting('general.default_currency')) ? 1 : 0;
return view('settings.currencies.edit', compact('currency', 'codes'));
}
/**
* Update the specified resource in storage.
*
* @param Currency $currency
* @param Request $request
*
* @return Response
*/
public function update(Currency $currency, Request $request)
{
$currency->update($request->all());
// Update default currency setting
if ($request['default_currency']) {
setting()->set('general.default_currency', $request['code']);
setting()->save();
}
$message = trans('messages.success.updated', ['type' => trans_choice('general.currencies', 1)]);
flash($message)->success();
return redirect('settings/currencies');
}
/**
* Remove the specified resource from storage.
*
* @param Currency $currency
*
* @return Response
*/
public function destroy(Currency $currency)
{
$currency->delete();
$message = trans('messages.success.deleted', ['type' => trans_choice('general.currencies', 1)]);
flash($message)->success();
return redirect('settings/currencies');
}
public function currency()
{
$json = new \stdClass();
$account_id = request('account_id');
if ($account_id) {
$currencies = Currency::enabled()->pluck('name', 'code')->toArray();
$json->currency_code = Account::where('id', $account_id)->pluck('currency_code')->first();
$json->currency_name = $currencies[$json->currency_code];
}
return response()->json($json);
}
}

View File

@ -0,0 +1,62 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Models\Setting\Setting;
use File;
use Module;
class Modules extends Controller
{
/**
* Show the form for editing the specified resource.
*
* @return Response
*/
public function edit($alias)
{
/*$setting = Setting::all($alias)->pluck('value', 'key');*/
$setting = Setting::all($alias)->map(function($s) use($alias) {
$s->key = str_replace($alias . '.', '', $s->key);
return $s;
})->pluck('value', 'key');
$module = Module::get($alias);
return view('settings.modules.edit', compact('setting', 'module'));
}
/**
* Update the specified resource in storage.
*
* @param $alias
*
* @return Response
*/
public function update($alias)
{
$fields = request()->all();
$skip_keys = ['company_id', '_method', '_token'];
foreach ($fields as $key => $value) {
// Don't process unwanted keys
if (in_array($key, $skip_keys)) {
continue;
}
setting()->set($alias . '.' . $key, $value);
}
// Save all settings
setting()->save();
$message = trans('messages.success.updated', ['type' => trans_choice('general.settings', 2)]);
flash($message)->success();
return redirect('settings/modules/' . $alias);
}
}

View File

@ -0,0 +1,118 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Http\Requests\Setting\Setting as Request;
use App\Models\Banking\Account;
use App\Models\Setting\Currency;
use App\Models\Setting\Tax;
use App\Models\Setting\Setting;
use App\Traits\DateTime;
use App\Traits\Uploads;
class Settings extends Controller
{
use DateTime, Uploads;
/**
* Show the form for editing the specified resource.
*
* @return Response
*/
public function edit()
{
/*$setting = Setting::all()->pluck('value', 'key');*/
$setting = Setting::all()->map(function($s) {
$s->key = str_replace('general.', '', $s->key);
return $s;
})->pluck('value', 'key');
$timezones = $this->getTimezones();
$accounts = Account::enabled()->pluck('name', 'id');
$currencies = Currency::enabled()->pluck('name', 'code');
$taxes = Tax::enabled()->pluck('name', 'id');
$date_formats = [
'd M Y' => '31 Dec 2017',
'd F Y' => '31 December 2017',
'd m Y' => '31 12 2017',
'm d Y' => '12 31 2017',
'Y m d' => '2017 12 31'
];
$date_separators = [
'dash' => trans('settings.localisation.date.dash'),
'slash' => trans('settings.localisation.date.slash'),
'dot' => trans('settings.localisation.date.dot'),
'comma' => trans('settings.localisation.date.comma'),
'space' => trans('settings.localisation.date.space'),
];
$email_protocols = [
'mail' => trans('settings.email.php'),
'smtp' => trans('settings.email.smtp.name'),
'sendmail' => trans('settings.email.sendmail'),
'log' => trans('settings.email.log')
];
return view('settings.settings.edit', compact(
'setting',
'timezones',
'accounts',
'currencies',
'taxes',
'date_formats',
'date_separators',
'email_protocols'
));
}
/**
* Update the specified resource in storage.
*
* @param Request $request
*
* @return Response
*/
public function update(Request $request)
{
$fields = $request->all();
$company_id = $request->get('company_id');
$skip_keys = ['company_id', '_method', '_token'];
$file_keys = ['company_logo', 'invoice_logo'];
foreach ($fields as $key => $value) {
// Don't process unwanted keys
if (in_array($key, $skip_keys)) {
continue;
}
// Process file uploads
if (in_array($key, $file_keys)) {
$value = $this->getUploadedFilePath($request->file($key), 'settings');
// Prevent reset
if (empty($value)) {
continue;
}
}
setting()->set('general.' . $key, $value);
}
// Save all settings
setting()->save();
$message = trans('messages.success.updated', ['type' => trans_choice('general.settings', 2)]);
flash($message)->success();
return redirect('settings/settings');
}
}

View File

@ -0,0 +1,122 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Http\Requests\Setting\Tax as Request;
use App\Models\Setting\Tax;
class Taxes extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$taxes = Tax::collect();
return view('settings.taxes.index', compact('taxes', 'rates'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
return view('settings.taxes.create');
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
*
* @return Response
*/
public function store(Request $request)
{
Tax::create($request->all());
$message = trans('messages.success.added', ['type' => trans_choice('general.tax_rates', 1)]);
flash($message)->success();
return redirect('settings/taxes');
}
/**
* Show the form for editing the specified resource.
*
* @param Tax $tax
*
* @return Response
*/
public function edit(Tax $tax)
{
return view('settings.taxes.edit', compact('tax'));
}
/**
* Update the specified resource in storage.
*
* @param Tax $tax
* @param Request $request
*
* @return Response
*/
public function update(Tax $tax, Request $request)
{
$tax->update($request->all());
$message = trans('messages.success.updated', ['type' => trans_choice('general.tax_rates', 1)]);
flash($message)->success();
return redirect('settings/taxes');
}
/**
* Remove the specified resource from storage.
*
* @param Tax $tax
*
* @return Response
*/
public function destroy(Tax $tax)
{
$canDelete = $tax->canDelete();
if ($canDelete === true) {
$tax->delete();
$message = trans('messages.success.deleted', ['type' => trans_choice('general.taxes', 1)]);
flash($message)->success();
} else {
$text = array();
if (isset($canDelete['items'])) {
$text[] = '<b>' . $canDelete['items'] . '</b> ' . trans_choice('general.items', ($canDelete['items'] > 1) ? 2 : 1);
}
if (isset($canDelete['bills'])) {
$text[] = '<b>' . $canDelete['bills'] . '</b> ' . trans_choice('general.bills', ($canDelete['bills'] > 1) ? 2 : 1);
}
if (isset($canDelete['invoices'])) {
$text[] = '<b>' . $canDelete['invoices'] . '</b> ' . trans_choice('general.items', ($canDelete['invoices'] > 1) ? 2 : 1);
}
$message = trans('messages.warning.deleted', ['type' => trans_choice('general.taxes', 1), 'text' => implode(', ', $text)]);
flash($message)->warning();
}
return redirect('settings/taxes');
}
}