diff --git a/app/Events/UpdateFinished.php b/app/Events/UpdateFinished.php new file mode 100644 index 00000000..ec7451a3 --- /dev/null +++ b/app/Events/UpdateFinished.php @@ -0,0 +1,31 @@ +old = $old; + $this->new = $new; + } +} diff --git a/app/Http/Controllers/Auth/AccessTokensController.php b/app/Http/Controllers/Auth/AccessTokensController.php index 0441aa57..73396b11 100644 --- a/app/Http/Controllers/Auth/AccessTokensController.php +++ b/app/Http/Controllers/Auth/AccessTokensController.php @@ -54,7 +54,7 @@ class AccessTokensController extends Controller { $request->validate([ 'username' => 'required|email', - 'password' => 'required|string', + 'password' => 'required|string|min:8', ]); if ($this->hasTooManyLoginAttempts($request)) { diff --git a/app/Http/Controllers/EnvironmentController.php b/app/Http/Controllers/EnvironmentController.php index 3254b546..c3eb6f7a 100755 --- a/app/Http/Controllers/EnvironmentController.php +++ b/app/Http/Controllers/EnvironmentController.php @@ -37,6 +37,7 @@ class EnvironmentController extends Controller if(array_key_exists("success", $results)) { Artisan::call('config:clear'); + Artisan::call('key:generate --force'); Artisan::call('migrate --seed'); Artisan::call('migrate', ['--path' => 'vendor/laravel/passport/database/migrations']); diff --git a/app/Http/Controllers/InvoicesController.php b/app/Http/Controllers/InvoicesController.php index ce434e24..7eaebb7b 100644 --- a/app/Http/Controllers/InvoicesController.php +++ b/app/Http/Controllers/InvoicesController.php @@ -260,6 +260,7 @@ class InvoicesController extends Controller 'error' => 'invalid_due_amount' ]); } elseif ($invoice->due_amount != 0 && $invoice->paid_status == Invoice::STATUS_PAID) { + $invoice->status = $invoice->getPreviousStatus(); $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; } diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index e141fd7c..9ebc8203 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -170,6 +170,7 @@ class PaymentController extends Controller $invoice->status = Invoice::STATUS_COMPLETED; $invoice->paid_status = Invoice::STATUS_PAID; } else { + $invoice->status = $invoice->getPreviousStatus(); $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; } @@ -211,16 +212,7 @@ class PaymentController extends Controller $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; } - if ($invoice->due_date < Carbon::now()) { - $invoice->status = Invoice::STATUS_OVERDUE; - } elseif ($invoice->viewed) { - $invoice->status = Invoice::STATUS_VIEWED; - } elseif ($invoice->sent) { - $invoice->status = Invoice::STATUS_SENT; - } else { - $invoice->status = Invoice::STATUS_DRAFT; - } - + $invoice->status = $invoice->getPreviousStatus(); $invoice->save(); } @@ -246,16 +238,7 @@ class PaymentController extends Controller $invoice->paid_status = Invoice::STATUS_PARTIALLY_PAID; } - if ($invoice->due_date < Carbon::now()) { - $invoice->status = Invoice::STATUS_OVERDUE; - } elseif ($invoice->sent) { - $invoice->status = Invoice::STATUS_SENT; - } elseif ($invoice->viewed) { - $invoice->status = Invoice::STATUS_VIEWED; - } else { - $invoice->status = Invoice::STATUS_DRAFT; - } - + $invoice->status = $invoice->getPreviousStatus(); $invoice->save(); } diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php index 99887eba..1e49aba9 100644 --- a/app/Http/Controllers/ReportController.php +++ b/app/Http/Controllers/ReportController.php @@ -26,8 +26,7 @@ class ReportController extends Controller $query->whereBetween( 'invoice_date', [$start->format('Y-m-d'), $end->format('Y-m-d')] - ) - ->where('paid_status', Invoice::STATUS_PAID); + ); }]) ->customer() ->whereCompany($company->id) diff --git a/app/Http/Controllers/UpdateController.php b/app/Http/Controllers/UpdateController.php new file mode 100644 index 00000000..2b1049d9 --- /dev/null +++ b/app/Http/Controllers/UpdateController.php @@ -0,0 +1,28 @@ +installed, $request->version); + + return response()->json($json); + } + + public function checkLatestVersion(Request $request) + { + set_time_limit(600); // 10 minutes + + $json = Updater::checkForUpdate(); + + return response()->json($json); + } +} diff --git a/app/Http/Requests/CustomerRequest.php b/app/Http/Requests/CustomerRequest.php index 9a55be44..0973264c 100644 --- a/app/Http/Requests/CustomerRequest.php +++ b/app/Http/Requests/CustomerRequest.php @@ -26,12 +26,16 @@ class CustomerRequest extends FormRequest case 'POST': return [ 'name' => 'required', + 'addresses.*.address_street_1' => 'max:255', + 'addresses.*.address_street_2' => 'max:255', 'email' => 'email|nullable|unique:users,email', ]; break; case 'PUT': return [ 'name' => 'required', + 'addresses.*.address_street_1' => 'max:255', + 'addresses.*.address_street_2' => 'max:255', ]; break; default: diff --git a/app/Http/Requests/EstimatesRequest.php b/app/Http/Requests/EstimatesRequest.php index 61b96d65..5a9c760e 100644 --- a/app/Http/Requests/EstimatesRequest.php +++ b/app/Http/Requests/EstimatesRequest.php @@ -27,13 +27,22 @@ class EstimatesRequest extends FormRequest 'expiry_date' => 'required', 'estimate_number' => 'required|unique:estimates,estimate_number', 'user_id' => 'required', - 'discount' => 'required', + 'discount' => 'required|digits_between:1,20', + 'discount_val' => 'required|digits_between:1,20', + 'sub_total' => 'required|digits_between:1,20', + 'total' => 'required|digits_between:1,20', + 'tax' => 'required|digits_between:1,20', 'estimate_template_id' => 'required', 'items' => 'required|array', + 'items.*.description' => 'max:255', 'items.*' => 'required|max:255', 'items.*.name' => 'required', - 'items.*.quantity' => 'required|numeric', - 'items.*.price' => 'required|numeric', + 'items.*.quantity' => 'required|digits_between:1,20', + 'items.*.price' => 'required|digits_between:1,20', + 'items.*.discount' => 'digits_between:1,20', + 'items.*.discount_val' => 'digits_between:1,20', + 'items.*.tax' => 'digits_between:1,20', + 'items.*.total' => 'digits_between:1,20', ]; if ($this->getMethod() == 'PUT') { diff --git a/app/Http/Requests/ExpenseRequest.php b/app/Http/Requests/ExpenseRequest.php index 576d69f5..3c03bd67 100644 --- a/app/Http/Requests/ExpenseRequest.php +++ b/app/Http/Requests/ExpenseRequest.php @@ -25,7 +25,7 @@ class ExpenseRequest extends FormRequest return [ 'expense_date' => 'required', 'expense_category_id' => 'required', - 'amount' => 'required' + 'amount' => 'required|digits_between:1,20' ]; } } diff --git a/app/Http/Requests/InvoicesRequest.php b/app/Http/Requests/InvoicesRequest.php index 2724e323..3b9306ce 100644 --- a/app/Http/Requests/InvoicesRequest.php +++ b/app/Http/Requests/InvoicesRequest.php @@ -27,13 +27,22 @@ class InvoicesRequest extends FormRequest 'due_date' => 'required', 'invoice_number' => 'required|unique:invoices,invoice_number', 'user_id' => 'required', - 'discount' => 'required', + 'discount' => 'required|digits_between:1,20', + 'discount_val' => 'required|digits_between:1,20', + 'sub_total' => 'required|digits_between:1,20', + 'total' => 'required|digits_between:1,20', + 'tax' => 'required|digits_between:1,20', 'invoice_template_id' => 'required', 'items' => 'required|array', 'items.*' => 'required|max:255', + 'items.*.description' => 'max:255', 'items.*.name' => 'required', - 'items.*.quantity' => 'required|numeric', - 'items.*.price' => 'required|numeric', + 'items.*.quantity' => 'required|digits_between:1,20', + 'items.*.price' => 'required|digits_between:1,20', + 'items.*.discount' => 'digits_between:1,20', + 'items.*.discount_val' => 'digits_between:1,20', + 'items.*.tax' => 'digits_between:1,20', + 'items.*.total' => 'digits_between:1,20', ]; if ($this->getMethod() == 'PUT') { diff --git a/app/Http/Requests/ItemsRequest.php b/app/Http/Requests/ItemsRequest.php index 1aa535f3..d24e29ef 100644 --- a/app/Http/Requests/ItemsRequest.php +++ b/app/Http/Requests/ItemsRequest.php @@ -24,7 +24,7 @@ class ItemsRequest extends FormRequest { return [ 'name' => 'required', - 'price' => 'required', + 'price' => 'required|digits_between:1,20', ]; } } diff --git a/app/Http/Requests/PaymentRequest.php b/app/Http/Requests/PaymentRequest.php index 9f326d1d..cc8a9718 100644 --- a/app/Http/Requests/PaymentRequest.php +++ b/app/Http/Requests/PaymentRequest.php @@ -26,7 +26,7 @@ class PaymentRequest extends FormRequest 'payment_date' => 'required', 'payment_number' => 'required|unique:payments,payment_number', 'user_id' => 'required', - 'amount' => 'required', + 'amount' => 'required|digits_between:1,20', ]; if ($this->getMethod() == 'PUT') { diff --git a/app/Http/Requests/ProfileRequest.php b/app/Http/Requests/ProfileRequest.php index 0a9b2e6c..6d96742d 100644 --- a/app/Http/Requests/ProfileRequest.php +++ b/app/Http/Requests/ProfileRequest.php @@ -31,6 +31,8 @@ class ProfileRequest extends FormRequest return [ 'name' => 'required', 'password' => 'required', + 'address_street_1' => 'max:255', + 'address_street_2' => 'max:255', 'email' => [ 'required', 'email', @@ -41,6 +43,8 @@ class ProfileRequest extends FormRequest case 'PUT': return [ 'name' => 'required', + 'address_street_1' => 'max:255', + 'address_street_2' => 'max:255', 'email' => 'required|email' ]; break; diff --git a/app/Invoice.php b/app/Invoice.php index 0bbd845a..31a1425e 100644 --- a/app/Invoice.php +++ b/app/Invoice.php @@ -113,6 +113,19 @@ class Invoice extends Model return $this->belongsTo(InvoiceTemplate::class); } + public function getPreviousStatus() + { + if ($this->due_date < Carbon::now()) { + return self::STATUS_OVERDUE; + } elseif ($this->viewed) { + return self::STATUS_VIEWED; + } elseif ($this->sent) { + return self::STATUS_SENT; + } else { + return self::STATUS_DRAFT; + } + } + private function strposX($haystack, $needle, $number) { if ($number == '1') { diff --git a/app/InvoiceItem.php b/app/InvoiceItem.php index 6d4c3bd8..9b75a507 100644 --- a/app/InvoiceItem.php +++ b/app/InvoiceItem.php @@ -60,7 +60,7 @@ class InvoiceItem extends Model $query->whereBetween( 'invoice_date', [$start->format('Y-m-d'), $end->format('Y-m-d')] - )->where('paid_status', Invoice::STATUS_PAID); + ); }); } diff --git a/app/Listeners/Updates/Listener.php b/app/Listeners/Updates/Listener.php new file mode 100644 index 00000000..6dab62a8 --- /dev/null +++ b/app/Listeners/Updates/Listener.php @@ -0,0 +1,24 @@ +old, static::VERSION, '>=')) { + // return false; + // } + + return true; + } +} diff --git a/app/Listeners/Updates/V10/Version101.php b/app/Listeners/Updates/V10/Version101.php new file mode 100644 index 00000000..03de4a34 --- /dev/null +++ b/app/Listeners/Updates/V10/Version101.php @@ -0,0 +1,32 @@ +check($event)) { + // return; + // } + + Artisan::call('db:seed', ['--class' => 'DemoSeeder', '--force' => true]); + + Setting::getSetting('version', self::VERSION); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 94b27038..85c073ef 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -4,6 +4,8 @@ namespace Laraspace\Providers; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; +use Laraspace\Events\UpdateFinished; +use Laraspace\Listeners\Updates\V10\Version101; class EventServiceProvider extends ServiceProvider { @@ -13,8 +15,8 @@ class EventServiceProvider extends ServiceProvider * @var array */ protected $listen = [ - 'Laraspace\Events\SomeEvent' => [ - 'Laraspace\Listeners\EventListener', + UpdateFinished::class=> [ + Version101::class, ], Registered::class => [ SendEmailVerificationNotification::class, diff --git a/app/Space/SiteApi.php b/app/Space/SiteApi.php new file mode 100644 index 00000000..2b04f178 --- /dev/null +++ b/app/Space/SiteApi.php @@ -0,0 +1,36 @@ + false, 'base_uri' => $base]); + + $headers['headers'] = array( + 'Accept' => 'application/json', + 'Referer' => url('/'), + 'crater' => Setting::getSetting('version') + ); + + $data['http_errors'] = false; + + $data = array_merge($data, $headers); + + try { + $result = $client->get($url, $data); + } catch (RequestException $e) { + $result = $e; + } + + return $result; + } +} diff --git a/app/Space/Updater.php b/app/Space/Updater.php new file mode 100644 index 00000000..b5d8b369 --- /dev/null +++ b/app/Space/Updater.php @@ -0,0 +1,110 @@ + 100, 'track_redirects' => true]); + + // Exception + if ($response instanceof RequestException) { + return [ + 'success' => false, + 'errors' => 'Download Exception', + 'data' => [ + 'path' => $path + ] + ]; + } + + if ($response && ($response->getStatusCode() == 200)) { + $data = $response->getBody()->getContents(); + } + + // Create temp directory + $path = 'temp-' . md5(mt_rand()); + $path2 = 'temp2-' . md5(mt_rand()); + $temp_path = storage_path('app/temp') . '/' . $path; + $temp_path2 = storage_path('app/temp') . '/' . $path2; + + if (!File::isDirectory($temp_path)) { + File::makeDirectory($temp_path); + File::makeDirectory($temp_path2); + } + + $file = $temp_path . '/upload.zip'; + + // Add content to the Zip file + $uploaded = is_int(file_put_contents($file, $data)) ? true : false; + + if (!$uploaded) { + return false; + } + + // Unzip the file + $zip = new ZipArchive(); + + if ($zip->open($file)) { + $zip->extractTo($temp_path2); + } + + $zip->close(); + + // Delete zip file + File::delete($file); + + if (!File::copyDirectory($temp_path2.'/crater', base_path())) { + return false; + } + + // Delete temp directory + File::deleteDirectory($temp_path); + File::deleteDirectory($temp_path2); + + try { + event(new UpdateFinished($installed, $version)); + + return [ + 'success' => true, + 'errors' => false, + 'data' => [] + ]; + } catch (\Exception $e) { + return [ + 'success' => false, + 'errors' => 'Update error', + 'data' => [] + ]; + } + } + + public static function checkForUpdate() + { + $data = null; + $url = '/check/latest/download/'.Setting::getSetting('version'); + + $response = static::getRemote($url, ['timeout' => 100, 'track_redirects' => true]); + + if ($response && ($response->getStatusCode() == 200)) { + $data = $response->getBody()->getContents(); + } + + return json_decode($data); + } +} diff --git a/app/User.php b/app/User.php index 4951a842..780332f6 100644 --- a/app/User.php +++ b/app/User.php @@ -216,7 +216,7 @@ class User extends Authenticatable implements HasMedia $query->whereBetween( 'invoice_date', [$start->format('Y-m-d'), $end->format('Y-m-d')] - )->where('paid_status', Invoice::STATUS_PAID); + ); }); } diff --git a/database/migrations/2017_04_11_081227_create_items_table.php b/database/migrations/2017_04_11_081227_create_items_table.php index e1041517..f383ff1f 100644 --- a/database/migrations/2017_04_11_081227_create_items_table.php +++ b/database/migrations/2017_04_11_081227_create_items_table.php @@ -18,7 +18,7 @@ class CreateItemsTable extends Migration $table->string('name'); $table->string('description')->nullable(); $table->string('unit')->nullable(); - $table->integer('price'); + $table->unsignedBigInteger('price'); $table->integer('company_id')->unsigned()->nullable(); $table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade'); $table->timestamps(); diff --git a/database/migrations/2017_04_12_090759_create_invoices_table.php b/database/migrations/2017_04_12_090759_create_invoices_table.php index 3f30011c..7089c847 100644 --- a/database/migrations/2017_04_12_090759_create_invoices_table.php +++ b/database/migrations/2017_04_12_090759_create_invoices_table.php @@ -24,13 +24,13 @@ class CreateInvoicesTable extends Migration $table->string('tax_per_item'); $table->string('discount_per_item'); $table->text('notes')->nullable(); - $table->decimal('discount', 15, 0)->nullable(); $table->string('discount_type')->nullable(); - $table->integer('discount_val')->nullable(); - $table->integer('sub_total'); - $table->integer('total'); - $table->integer('tax'); - $table->integer('due_amount'); + $table->unsignedBigInteger('discount')->nullable(); + $table->unsignedBigInteger('discount_val')->nullable(); + $table->unsignedBigInteger('sub_total'); + $table->unsignedBigInteger('total'); + $table->unsignedBigInteger('tax'); + $table->unsignedBigInteger('due_amount'); $table->boolean('sent')->default(false); $table->boolean('viewed')->default(false); $table->string('unique_hash')->nullable(); diff --git a/database/migrations/2017_04_12_091015_create_invoice_items_table.php b/database/migrations/2017_04_12_091015_create_invoice_items_table.php index 343b6a77..26af22bf 100644 --- a/database/migrations/2017_04_12_091015_create_invoice_items_table.php +++ b/database/migrations/2017_04_12_091015_create_invoice_items_table.php @@ -17,13 +17,13 @@ class CreateInvoiceItemsTable extends Migration $table->increments('id'); $table->string('name'); $table->string('description')->nullable(); - $table->integer('quantity'); - $table->integer('price'); $table->string('discount_type'); - $table->integer('discount_val'); - $table->decimal('discount', 15, 0); - $table->integer('tax'); - $table->integer('total'); + $table->unsignedBigInteger('quantity'); + $table->unsignedBigInteger('price'); + $table->unsignedBigInteger('discount_val'); + $table->unsignedBigInteger('discount'); + $table->unsignedBigInteger('tax'); + $table->unsignedBigInteger('total'); $table->integer('invoice_id')->unsigned(); $table->foreign('invoice_id')->references('id')->on('invoices')->onDelete('cascade'); $table->integer('item_id')->unsigned()->nullable(); diff --git a/database/migrations/2017_05_05_055609_create_estimates_table.php b/database/migrations/2017_05_05_055609_create_estimates_table.php index 77c43e68..cfd5b536 100644 --- a/database/migrations/2017_05_05_055609_create_estimates_table.php +++ b/database/migrations/2017_05_05_055609_create_estimates_table.php @@ -23,12 +23,12 @@ class CreateEstimatesTable extends Migration $table->string('tax_per_item'); $table->string('discount_per_item'); $table->string('notes')->nullable(); - $table->decimal('discount', 15, 0)->nullable(); $table->string('discount_type')->nullable(); - $table->integer('discount_val')->nullable(); - $table->integer('sub_total'); - $table->integer('total'); - $table->integer('tax'); + $table->unsignedBigInteger('discount')->nullable(); + $table->unsignedBigInteger('discount_val')->nullable(); + $table->unsignedBigInteger('sub_total'); + $table->unsignedBigInteger('total'); + $table->unsignedBigInteger('tax'); $table->string('unique_hash')->nullable(); $table->integer('user_id')->unsigned()->nullable(); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); diff --git a/database/migrations/2017_10_02_123501_create_estimate_items_table.php b/database/migrations/2017_10_02_123501_create_estimate_items_table.php index 400086c6..a2222dcb 100644 --- a/database/migrations/2017_10_02_123501_create_estimate_items_table.php +++ b/database/migrations/2017_10_02_123501_create_estimate_items_table.php @@ -17,13 +17,13 @@ class CreateEstimateItemsTable extends Migration $table->increments('id'); $table->string('name'); $table->string('description')->nullable(); - $table->integer('quantity'); $table->string('discount_type'); - $table->decimal('discount', 15, 0); - $table->integer('discount_val'); - $table->integer('price'); - $table->integer('tax'); - $table->integer('total'); + $table->unsignedBigInteger('quantity'); + $table->unsignedBigInteger('discount'); + $table->unsignedBigInteger('discount_val'); + $table->unsignedBigInteger('price'); + $table->unsignedBigInteger('tax'); + $table->unsignedBigInteger('total'); $table->integer('item_id')->unsigned()->nullable(); $table->foreign('item_id')->references('id')->on('items')->onDelete('cascade'); $table->integer('estimate_id')->unsigned(); diff --git a/database/migrations/2018_11_02_133956_create_expenses_table.php b/database/migrations/2018_11_02_133956_create_expenses_table.php index ae3e1f2c..25912644 100644 --- a/database/migrations/2018_11_02_133956_create_expenses_table.php +++ b/database/migrations/2018_11_02_133956_create_expenses_table.php @@ -17,7 +17,7 @@ class CreateExpensesTable extends Migration $table->increments('id'); $table->date('expense_date'); $table->string('attachment_receipt')->nullable(); - $table->integer('amount'); + $table->unsignedBigInteger('amount'); $table->string('notes')->nullable(); $table->integer('expense_category_id')->unsigned(); $table->foreign('expense_category_id')->references('id')->on('expense_categories')->onDelete('cascade'); diff --git a/database/migrations/2019_09_03_135234_create_payments_table.php b/database/migrations/2019_09_03_135234_create_payments_table.php index 7797905c..d34af4f2 100644 --- a/database/migrations/2019_09_03_135234_create_payments_table.php +++ b/database/migrations/2019_09_03_135234_create_payments_table.php @@ -19,7 +19,7 @@ class CreatePaymentsTable extends Migration $table->string('payment_mode')->nullable(); $table->date('payment_date'); $table->text('notes')->nullable(); - $table->decimal('amount', 15, 0); + $table->unsignedBigInteger('amount'); $table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); $table->integer('invoice_id')->unsigned()->nullable(); diff --git a/database/migrations/2019_09_21_052548_create_taxes_table.php b/database/migrations/2019_09_21_052548_create_taxes_table.php index 56622267..f5ae90f9 100644 --- a/database/migrations/2019_09_21_052548_create_taxes_table.php +++ b/database/migrations/2019_09_21_052548_create_taxes_table.php @@ -30,7 +30,7 @@ class CreateTaxesTable extends Migration $table->integer('company_id')->unsigned()->nullable(); $table->foreign('company_id')->references('id')->on('companies'); $table->string('name'); - $table->decimal('amount', 15, 0); + $table->unsignedBigInteger('amount'); $table->decimal('percent', 5, 2); $table->tinyInteger('compound_tax')->default(0); $table->timestamps(); diff --git a/database/seeds/EstimateTemplateSeeder.php b/database/seeds/EstimateTemplateSeeder.php index 63263e17..13219dc9 100644 --- a/database/seeds/EstimateTemplateSeeder.php +++ b/database/seeds/EstimateTemplateSeeder.php @@ -13,19 +13,19 @@ class EstimateTemplateSeeder extends Seeder public function run() { EstimateTemplate::create([ - 'name' => 'Estimate Template1', + 'name' => 'Template 1', 'view' => 'estimate1', 'path' => '/assets/img/PDF/Template1.png' ]); EstimateTemplate::create([ - 'name' => 'Estimate Template2', + 'name' => 'Template 2', 'view' => 'estimate2', 'path' => '/assets/img/PDF/Template2.png' ]); EstimateTemplate::create([ - 'name' => 'Estimate Template3', + 'name' => 'Template 3', 'view' => 'estimate3', 'path' => '/assets/img/PDF/Template3.png' ]); diff --git a/database/seeds/InvoiceTemplateSeeder.php b/database/seeds/InvoiceTemplateSeeder.php index aade6397..b0fcb647 100644 --- a/database/seeds/InvoiceTemplateSeeder.php +++ b/database/seeds/InvoiceTemplateSeeder.php @@ -13,19 +13,19 @@ class InvoiceTemplateSeeder extends Seeder public function run() { InvoiceTemplate::create([ - 'name' => 'Invoice Template1', + 'name' => 'Template 1', 'view' => 'invoice1', 'path' => '/assets/img/PDF/Template1.png' ]); InvoiceTemplate::create([ - 'name' => 'Invoice Template2', + 'name' => ' Template 2', 'view' => 'invoice2', 'path' => '/assets/img/PDF/Template2.png' ]); InvoiceTemplate::create([ - 'name' => 'Invoice Template3', + 'name' => 'Template 3', 'view' => 'invoice3', 'path' => '/assets/img/PDF/Template3.png' ]); diff --git a/routes/api.php b/routes/api.php index 6fca466d..fd0f863f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -106,6 +106,8 @@ Route::group(['middleware' => 'redirect-if-installed'], function () { 'uses' => 'OnboardingController@companySettings' ]); }); + + // App version // ---------------------------------- @@ -120,6 +122,18 @@ Route::group(['middleware' => 'api'], function () { 'middleware' => 'admin' ], function () { + // Auto update routes + //---------------------------------- + Route::post('/update', [ + 'as' => 'auto.update', + 'uses' => 'UpdateController@update' + ]); + + Route::get('/check/update', [ + 'as' => 'check.update', + 'uses' => 'UpdateController@checkLatestVersion' + ]); + Route::get('/bootstrap', [ 'as' => 'bootstrap', 'uses' => 'UsersController@getBootstrap'