mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-06 10:43:48 +00:00
Compare commits
181 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
571fec7949 | ||
|
|
f9b5595ab6 | ||
|
|
b358a614e2 | ||
|
|
7d9d2a9da9 | ||
|
|
c132601f06 | ||
|
|
0e4595c30f | ||
|
|
c323304f2e | ||
|
|
d9ee68db7c | ||
|
|
756e0c4ca3 | ||
|
|
c52c576f7c | ||
|
|
1a63f3aa07 | ||
|
|
f29a93f77b | ||
|
|
f294c8f4a1 | ||
|
|
959beae9e9 | ||
|
|
524b5a94df | ||
|
|
05dc227650 | ||
|
|
350f130d98 | ||
|
|
99b4b030d2 | ||
|
|
8a2af11f6a | ||
|
|
26636dffab | ||
|
|
3dae2a72c9 | ||
|
|
38fadeec5e | ||
|
|
31954767b7 | ||
|
|
c760116cbf | ||
|
|
49131ddf97 | ||
|
|
fb7338c2bb | ||
|
|
d2391afb14 | ||
|
|
8e66900d8d | ||
|
|
1a77ccdb9d | ||
|
|
50a96d9051 | ||
|
|
7baf8f0ec9 | ||
|
|
8389f7a4d6 | ||
|
|
b74f93a271 | ||
|
|
ed9c80eb74 | ||
|
|
147f82e9a8 | ||
|
|
15a6ad6166 | ||
|
|
3fbf0ca093 | ||
|
|
2586e65cf9 | ||
|
|
b8731a108b | ||
|
|
2f238c90d9 | ||
|
|
6f9ae7ebfe | ||
|
|
983425b89a | ||
|
|
ca9ed1029e | ||
|
|
78aa1a0779 | ||
|
|
4ec2d1077f | ||
|
|
e371b37016 | ||
|
|
05583f74af | ||
|
|
6cbffd08b2 | ||
|
|
66fe92653c | ||
|
|
b16b8b87cc | ||
|
|
04a1f88abb | ||
|
|
0eee956011 | ||
|
|
722eceb0c1 | ||
|
|
b4e6561134 | ||
|
|
3af8bff13b | ||
|
|
f5958dda57 | ||
|
|
e8ca132a8b | ||
|
|
a7a6ef9f0a | ||
|
|
a6db642db7 | ||
|
|
1ea8f2ce60 | ||
|
|
5ea898d716 | ||
|
|
9857a30d2c | ||
|
|
ca255a7416 | ||
|
|
73672bc023 | ||
|
|
070f8b4d40 | ||
|
|
f5f0663d07 | ||
|
|
69deafeda0 | ||
|
|
070a3aaba4 | ||
|
|
599b238ab4 | ||
|
|
bdfd92872e | ||
|
|
62820c8ddb | ||
|
|
c65414f0c4 | ||
|
|
7cc27938bf | ||
|
|
0332f8b1fb | ||
|
|
fbde515a40 | ||
|
|
cc4f9c0b89 | ||
|
|
8a784f4520 | ||
|
|
9793a55efd | ||
|
|
eb2a7323e9 | ||
|
|
d162018fcf | ||
|
|
23611defc1 | ||
|
|
434c45299c | ||
|
|
878bdb3ce7 | ||
|
|
fe0ed38157 | ||
|
|
8f9bdc5918 | ||
|
|
ed6c968dae | ||
|
|
c923a40363 | ||
|
|
3c3e82758d | ||
|
|
5167ae520e | ||
|
|
aea4213ec2 | ||
|
|
31dd782bae | ||
|
|
120973ae00 | ||
|
|
1486ce63fa | ||
|
|
834b0ba5e0 | ||
|
|
19bce195b4 | ||
|
|
13ec1257e1 | ||
|
|
248825f2d1 | ||
|
|
b37edd298a | ||
|
|
1e4bbd10f3 | ||
|
|
bcf14595bf | ||
|
|
e7c4048258 | ||
|
|
f7135c9b27 | ||
|
|
5be490c8d5 | ||
|
|
7cf193abb7 | ||
|
|
644fbaede4 | ||
|
|
e65e3e88d7 | ||
|
|
9a5f9fe49d | ||
|
|
16c47465e6 | ||
|
|
da55b3dd78 | ||
|
|
894cef5d66 | ||
|
|
90f91c47ce | ||
|
|
3774a05edd | ||
|
|
73861f814c | ||
|
|
5b70066900 | ||
|
|
4b0e4da013 | ||
|
|
eae212ac5d | ||
|
|
5a9583be5b | ||
|
|
aa585b60d5 | ||
|
|
8707a61144 | ||
|
|
597a600109 | ||
|
|
4dfc5bcc35 | ||
|
|
33d45408d2 | ||
|
|
90051cec91 | ||
|
|
dd0d10afda | ||
|
|
af571317ff | ||
|
|
80019b822d | ||
|
|
edafa1791b | ||
|
|
498f81b846 | ||
|
|
56bbdc846c | ||
|
|
a2c606e1c7 | ||
|
|
3e61482a2c | ||
|
|
bec2dd0e03 | ||
|
|
0bf81164e7 | ||
|
|
e78f1ce731 | ||
|
|
b00c8cdbed | ||
|
|
44a656e5d5 | ||
|
|
11c6690e50 | ||
|
|
fac75c7e71 | ||
|
|
57bab1a225 | ||
|
|
17ccf7b354 | ||
|
|
71147adb01 | ||
|
|
7cefcf8dab | ||
|
|
737adfa91a | ||
|
|
20f8fe4b51 | ||
|
|
e0daa46b50 | ||
|
|
2ca4d4a02d | ||
|
|
399748b01a | ||
|
|
2f4df83b31 | ||
|
|
9ea78d103e | ||
|
|
790da00420 | ||
|
|
760d7a4687 | ||
|
|
37ab6408ba | ||
|
|
b3737c11ba | ||
|
|
4f667f7a94 | ||
|
|
377c471a6c | ||
|
|
7cf09494e5 | ||
|
|
5d0348e2d0 | ||
|
|
6d5a43da72 | ||
|
|
d2a82aaa80 | ||
|
|
a3d4dfec3b | ||
|
|
ee1a8a6719 | ||
|
|
44fe96497c | ||
|
|
88c134918e | ||
|
|
af79a28361 | ||
|
|
1bb3ca4fb5 | ||
|
|
1ffa569ea3 | ||
|
|
480f518ebc | ||
|
|
888d76fea0 | ||
|
|
47ce8c3eef | ||
|
|
75042e0c42 | ||
|
|
9566a4a830 | ||
|
|
7521c588fc | ||
|
|
97f13c0b62 | ||
|
|
4b97c674ba | ||
|
|
0d4b8403ba | ||
|
|
021e78e0c5 | ||
|
|
778a94e5ba | ||
|
|
0db55b51d2 | ||
|
|
45de6b557a | ||
|
|
3c01ce5ad3 | ||
|
|
80b24cd753 |
@@ -5,7 +5,7 @@ APP_DEBUG=true
|
||||
APP_URL=http://localhost
|
||||
APP_DEMO=false
|
||||
|
||||
LOG_CHANNEL=stack
|
||||
LOG_CHANNEL=daily
|
||||
|
||||
DB_CONNECTION=sqlite
|
||||
DB_HOST=null
|
||||
@@ -45,9 +45,9 @@ PUSHER_APP_SECRET=
|
||||
PUSHER_APP_CLUSTER=mt1
|
||||
|
||||
CASHIER_LOGGER=stack
|
||||
CASHIER_CURRENCY=EUR
|
||||
STRIPE_KEY=pk_test_51GsACaCBETHMUxzVsYkeApHtqb85paMuye7G77PDDQ28kXqDJ5HTmqLi13aM6xee81OQK1fhkTZ7vmDiWLStU9160061Yb2MtL
|
||||
STRIPE_SECRET=sk_test_51GsACaCBETHMUxzVviYCrv0CeZMyWAOfBPe4uH5rkKJcJxrXhIciWQTr7UB1sgw9geoJMkNDVSWBQW36tuAsVznd00zhNHXhok
|
||||
CASHIER_CURRENCY=CZK
|
||||
STRIPE_KEY=pk_test_51HSO06BwlPpoyJNwCscZSl5kYHtck4ChaICquBQodULHWTQlQxpEpQ22rQAPY1B82k78dR2tquugI3qRv2HcFrx300pqiho4Dz
|
||||
STRIPE_SECRET=sk_test_51HSO06BwlPpoyJNwOCWiJafj5ebRF5dYQ0VpaQnHVWLZYYgj8jl3CX2K51Sf1cjDKxUzzGMVsg6e98i2GgtFSSfu00Q1uo6Knz
|
||||
STRIPE_WEBHOOK_SECRET=whsec_eKrDhqtpbMUXOKqrUHf78SrZxHHYOdrf
|
||||
CASHIER_PAYMENT_NOTIFICATION=App\Notifications\ConfirmPayment
|
||||
CASHIER_MODEL=App\Models\User
|
||||
|
||||
5
.github/workflows/backend-code-style-fix.yml
vendored
5
.github/workflows/backend-code-style-fix.yml
vendored
@@ -2,11 +2,10 @@ name: Code Style Fix
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ oasis ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ oasis ]
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
php-cs-fixer:
|
||||
|
||||
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -2,9 +2,9 @@ name: Frontend Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ oasis ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ oasis ]
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
@@ -32,4 +32,4 @@ jobs:
|
||||
- name: Commit changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: Application Build
|
||||
commit_message: Application Build
|
||||
8
.github/workflows/unit-testing.yml
vendored
8
.github/workflows/unit-testing.yml
vendored
@@ -2,9 +2,9 @@ name: Unit Testing
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ oasis ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ oasis ]
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
@@ -35,6 +35,10 @@ jobs:
|
||||
run: |
|
||||
echo "::add-matcher::${{ runner.tool_cache }}/php.json"
|
||||
echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
|
||||
|
||||
- uses: actions/labeler@v2
|
||||
with:
|
||||
repo-token: ${{ secrets.GTHB_TOKEN }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer update --${{ matrix.stability }} --prefer-dist --no-interaction
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -42,7 +42,7 @@ return $config->setRules([
|
||||
'trailing_comma_in_multiline' => ['elements' => ['arrays']],
|
||||
'phpdoc_scalar' => true,
|
||||
'unary_operator_spaces' => true,
|
||||
'binary_operator_spaces' => true,
|
||||
'binary_operator_spaces' => ['operators' => ['=>' => 'align']],
|
||||
'single_trait_insert_per_statement' => false,
|
||||
'method_chaining_indentation' => true,
|
||||
'array_indentation' => true,
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -29,7 +29,7 @@ class CreateNewUser implements CreatesNewUsers
|
||||
}
|
||||
|
||||
Validator::make($input, [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => [
|
||||
'required',
|
||||
'string',
|
||||
@@ -41,7 +41,7 @@ class CreateNewUser implements CreatesNewUsers
|
||||
])->validate();
|
||||
|
||||
$user = User::create([
|
||||
'email' => $input['email'],
|
||||
'email' => $input['email'],
|
||||
'password' => bcrypt($input['password']),
|
||||
]);
|
||||
|
||||
@@ -50,7 +50,7 @@ class CreateNewUser implements CreatesNewUsers
|
||||
$user
|
||||
->settings()
|
||||
->create([
|
||||
'name' => $input['name'],
|
||||
'name' => $input['name'],
|
||||
'storage_capacity' => $settings['storage_default'],
|
||||
]);
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ class UpdateUserPassword implements UpdatesUserPasswords
|
||||
{
|
||||
Validator::make($input, [
|
||||
'current_password' => ['required', 'string'],
|
||||
'password' => $this->passwordRules(),
|
||||
'password' => $this->passwordRules(),
|
||||
])->after(function ($validator) use ($user, $input) {
|
||||
if (! isset($input['current_password']) || ! Hash::check($input['current_password'], $user->password)) {
|
||||
$validator->errors()->add('current_password', __('The provided password does not match your current password.'));
|
||||
|
||||
@@ -34,7 +34,7 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation
|
||||
$this->updateVerifiedUser($user, $input);
|
||||
} else {
|
||||
$user->forceFill([
|
||||
'name' => $input['name'],
|
||||
'name' => $input['name'],
|
||||
'email' => $input['email'],
|
||||
])->save();
|
||||
}
|
||||
@@ -50,8 +50,8 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation
|
||||
protected function updateVerifiedUser($user, array $input)
|
||||
{
|
||||
$user->forceFill([
|
||||
'name' => $input['name'],
|
||||
'email' => $input['email'],
|
||||
'name' => $input['name'],
|
||||
'email' => $input['email'],
|
||||
'email_verified_at' => null,
|
||||
])->save();
|
||||
|
||||
|
||||
@@ -87,24 +87,24 @@ class SetupDevEnvironment extends Command
|
||||
private function create_admin(): void
|
||||
{
|
||||
$user = User::forceCreate([
|
||||
'role' => 'admin',
|
||||
'email' => 'howdy@hi5ve.digital',
|
||||
'role' => 'admin',
|
||||
'email' => 'howdy@hi5ve.digital',
|
||||
'password' => bcrypt('vuefilemanager'),
|
||||
]);
|
||||
|
||||
$user
|
||||
->settings()
|
||||
->create([
|
||||
'avatar' => 'avatars/avatar-01.png',
|
||||
'avatar' => 'avatars/avatar-01.png',
|
||||
'storage_capacity' => 5,
|
||||
'name' => 'Jane Doe',
|
||||
'address' => $this->faker->address,
|
||||
'state' => $this->faker->state,
|
||||
'city' => $this->faker->city,
|
||||
'postal_code' => $this->faker->postcode,
|
||||
'country' => $this->faker->randomElement(['SK', 'CZ', 'DE', 'FR']),
|
||||
'phone_number' => $this->faker->phoneNumber,
|
||||
'timezone' => $this->faker->randomElement(['+1.0', '+2.0', '+3.0']),
|
||||
'name' => 'Jane Doe',
|
||||
'address' => $this->faker->address,
|
||||
'state' => $this->faker->state,
|
||||
'city' => $this->faker->city,
|
||||
'postal_code' => $this->faker->postcode,
|
||||
'country' => $this->faker->randomElement(['SK', 'CZ', 'DE', 'FR']),
|
||||
'phone_number' => $this->faker->phoneNumber,
|
||||
'timezone' => $this->faker->randomElement(['+1.0', '+2.0', '+3.0']),
|
||||
]);
|
||||
|
||||
Storage::putFileAs('avatars', storage_path('demo/avatars/avatar-01.png'), 'avatar-01.png', 'private');
|
||||
@@ -127,24 +127,24 @@ class SetupDevEnvironment extends Command
|
||||
],
|
||||
])->each(function ($user) {
|
||||
$newbie = User::forceCreate([
|
||||
'role' => 'user',
|
||||
'email' => $this->faker->email,
|
||||
'role' => 'user',
|
||||
'email' => $this->faker->email,
|
||||
'password' => bcrypt('vuefilemanager'),
|
||||
]);
|
||||
|
||||
$newbie
|
||||
->settings()
|
||||
->create([
|
||||
'avatar' => "avatars/{$user['avatar']}",
|
||||
'avatar' => "avatars/{$user['avatar']}",
|
||||
'storage_capacity' => 5,
|
||||
'name' => $this->faker->name,
|
||||
'address' => $this->faker->address,
|
||||
'state' => $this->faker->state,
|
||||
'city' => $this->faker->city,
|
||||
'postal_code' => $this->faker->postcode,
|
||||
'country' => $this->faker->randomElement(['SK', 'CZ', 'DE', 'FR']),
|
||||
'phone_number' => $this->faker->phoneNumber,
|
||||
'timezone' => $this->faker->randomElement(['+1.0', '+2.0', '+3.0']),
|
||||
'name' => $this->faker->name,
|
||||
'address' => $this->faker->address,
|
||||
'state' => $this->faker->state,
|
||||
'city' => $this->faker->city,
|
||||
'postal_code' => $this->faker->postcode,
|
||||
'country' => $this->faker->randomElement(['SK', 'CZ', 'DE', 'FR']),
|
||||
'phone_number' => $this->faker->phoneNumber,
|
||||
'timezone' => $this->faker->randomElement(['+1.0', '+2.0', '+3.0']),
|
||||
]);
|
||||
|
||||
Storage::putFileAs('avatars', storage_path("demo/avatars/{$user['avatar']}"), $user['avatar'], 'private');
|
||||
@@ -165,14 +165,14 @@ class SetupDevEnvironment extends Command
|
||||
$shared_folder = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Shared Folder',
|
||||
'emoji' => [
|
||||
'codes' => '1F680',
|
||||
'char' => '🚀',
|
||||
'name' => 'rocket',
|
||||
'author' => 'user',
|
||||
'name' => 'Shared Folder',
|
||||
'emoji' => [
|
||||
'codes' => '1F680',
|
||||
'char' => '🚀',
|
||||
'name' => 'rocket',
|
||||
'category' => 'Travel & Places (transport-air)',
|
||||
'group' => 'Travel & Places',
|
||||
'group' => 'Travel & Places',
|
||||
'subgroup' => 'transport-air',
|
||||
],
|
||||
'created_at' => now(),
|
||||
@@ -180,35 +180,35 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
Share::factory(Share::class)
|
||||
->create([
|
||||
'type' => 'folder',
|
||||
'item_id' => $shared_folder->id,
|
||||
'user_id' => $user->id,
|
||||
'permission' => 'editor',
|
||||
'type' => 'folder',
|
||||
'item_id' => $shared_folder->id,
|
||||
'user_id' => $user->id,
|
||||
'permission' => 'editor',
|
||||
'is_protected' => false,
|
||||
'password' => null,
|
||||
'expire_in' => null,
|
||||
'password' => null,
|
||||
'expire_in' => null,
|
||||
]);
|
||||
|
||||
$peters_files = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => $shared_folder->id,
|
||||
'author' => 'visitor',
|
||||
'name' => "Peter's Files",
|
||||
'author' => 'visitor',
|
||||
'name' => "Peter's Files",
|
||||
]);
|
||||
|
||||
// 2.
|
||||
$random_pics = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Random Pics',
|
||||
'emoji' => [
|
||||
'codes' => '1F4F7',
|
||||
'char' => '📷',
|
||||
'name' => 'camera',
|
||||
'author' => 'user',
|
||||
'name' => 'Random Pics',
|
||||
'emoji' => [
|
||||
'codes' => '1F4F7',
|
||||
'char' => '📷',
|
||||
'name' => 'camera',
|
||||
'category' => 'Objects (light & video)',
|
||||
'group' => 'Objects',
|
||||
'group' => 'Objects',
|
||||
'subgroup' => 'light & video',
|
||||
],
|
||||
'created_at' => now()->subMinutes(1),
|
||||
@@ -216,32 +216,32 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
$nature = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => $random_pics->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Nature',
|
||||
'emoji' => [
|
||||
'codes' => '26F0',
|
||||
'char' => '⛰',
|
||||
'name' => 'mountain',
|
||||
'author' => 'user',
|
||||
'name' => 'Nature',
|
||||
'emoji' => [
|
||||
'codes' => '26F0',
|
||||
'char' => '⛰',
|
||||
'name' => 'mountain',
|
||||
'category' => 'Travel & Places (place-geographic)',
|
||||
'group' => 'Travel & Places',
|
||||
'group' => 'Travel & Places',
|
||||
'subgroup' => 'place-geographic',
|
||||
],
|
||||
]);
|
||||
|
||||
$apartments = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => $random_pics->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Apartments',
|
||||
'emoji' => [
|
||||
'codes' => '1F3E0',
|
||||
'char' => '🏠',
|
||||
'name' => 'house',
|
||||
'author' => 'user',
|
||||
'name' => 'Apartments',
|
||||
'emoji' => [
|
||||
'codes' => '1F3E0',
|
||||
'char' => '🏠',
|
||||
'name' => 'house',
|
||||
'category' => 'Travel & Places (place-building)',
|
||||
'group' => 'Travel & Places',
|
||||
'group' => 'Travel & Places',
|
||||
'subgroup' => 'place-building',
|
||||
],
|
||||
]);
|
||||
@@ -249,87 +249,87 @@ class SetupDevEnvironment extends Command
|
||||
// 3.
|
||||
$playable_media = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Playable Media',
|
||||
'user_id' => $user->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Playable Media',
|
||||
'created_at' => now()->subMinutes(2),
|
||||
]);
|
||||
|
||||
$video = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => $playable_media->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Video',
|
||||
'author' => 'user',
|
||||
'name' => 'Video',
|
||||
]);
|
||||
|
||||
$audio = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => $playable_media->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Audio',
|
||||
'author' => 'user',
|
||||
'name' => 'Audio',
|
||||
]);
|
||||
|
||||
// 4.
|
||||
$multi_level = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Multi Level Folder',
|
||||
'user_id' => $user->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Multi Level Folder',
|
||||
'created_at' => now()->subMinutes(3),
|
||||
]);
|
||||
|
||||
$first_level = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => $multi_level->id,
|
||||
'author' => 'user',
|
||||
'name' => 'First Level',
|
||||
'author' => 'user',
|
||||
'name' => 'First Level',
|
||||
]);
|
||||
|
||||
$second_level = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => $first_level->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Second Level',
|
||||
'author' => 'user',
|
||||
'name' => 'Second Level',
|
||||
]);
|
||||
|
||||
$third_level = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'user_id' => $user->id,
|
||||
'parent_id' => $second_level->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Third Level',
|
||||
'author' => 'user',
|
||||
'name' => 'Third Level',
|
||||
]);
|
||||
|
||||
// 5.
|
||||
$documents = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Documents',
|
||||
'user_id' => $user->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Documents',
|
||||
'created_at' => now()->subMinutes(4),
|
||||
]);
|
||||
|
||||
Share::factory(Share::class)
|
||||
->create([
|
||||
'type' => 'folder',
|
||||
'item_id' => $documents->id,
|
||||
'user_id' => $user->id,
|
||||
'permission' => 'editor',
|
||||
'type' => 'folder',
|
||||
'item_id' => $documents->id,
|
||||
'user_id' => $user->id,
|
||||
'permission' => 'editor',
|
||||
'is_protected' => false,
|
||||
'password' => null,
|
||||
'expire_in' => null,
|
||||
'password' => null,
|
||||
'expire_in' => null,
|
||||
]);
|
||||
|
||||
// 6.
|
||||
$videohive = Folder::factory(Folder::class)
|
||||
->create([
|
||||
'user_id' => $user->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Videohive by MakingCG',
|
||||
'user_id' => $user->id,
|
||||
'author' => 'user',
|
||||
'name' => 'Videohive by MakingCG',
|
||||
'created_at' => now()->subMinutes(5),
|
||||
]);
|
||||
|
||||
@@ -345,22 +345,22 @@ class SetupDevEnvironment extends Command
|
||||
// Get documents to root directory
|
||||
collect([
|
||||
[
|
||||
'name' => 'Random Document',
|
||||
'name' => 'Random Document',
|
||||
'basename' => 'Licence.pdf',
|
||||
'mimetype' => 'pdf',
|
||||
],
|
||||
[
|
||||
'name' => 'School Report',
|
||||
'name' => 'School Report',
|
||||
'basename' => 'Project Notes.pdf',
|
||||
'mimetype' => 'pdf',
|
||||
],
|
||||
[
|
||||
'name' => 'Personal Savings',
|
||||
'name' => 'Personal Savings',
|
||||
'basename' => 'School Report.pages',
|
||||
'mimetype' => 'pages',
|
||||
],
|
||||
[
|
||||
'name' => 'Top Secret Files',
|
||||
'name' => 'Top Secret Files',
|
||||
'basename' => 'Stories of the Night Skies.pages',
|
||||
'mimetype' => 'pages',
|
||||
],
|
||||
@@ -373,14 +373,14 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
// Create file record
|
||||
File::create([
|
||||
'folder_id' => null,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file['name'],
|
||||
'basename' => $basename,
|
||||
'type' => 'file',
|
||||
'author' => 'user',
|
||||
'mimetype' => $file['mimetype'],
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'folder_id' => null,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file['name'],
|
||||
'basename' => $basename,
|
||||
'type' => 'file',
|
||||
'author' => 'user',
|
||||
'mimetype' => $file['mimetype'],
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'created_at' => now()->subMinutes(rand(1, 5)),
|
||||
]);
|
||||
});
|
||||
@@ -388,22 +388,22 @@ class SetupDevEnvironment extends Command
|
||||
// Get documents to documents folder
|
||||
collect([
|
||||
[
|
||||
'name' => 'Home Improvement',
|
||||
'name' => 'Home Improvement',
|
||||
'basename' => 'Licence.pdf',
|
||||
'mimetype' => 'pdf',
|
||||
],
|
||||
[
|
||||
'name' => 'Project Notes',
|
||||
'name' => 'Project Notes',
|
||||
'basename' => 'Project Notes.pdf',
|
||||
'mimetype' => 'pdf',
|
||||
],
|
||||
[
|
||||
'name' => 'Personal Savings',
|
||||
'name' => 'Personal Savings',
|
||||
'basename' => 'School Report.pages',
|
||||
'mimetype' => 'pages',
|
||||
],
|
||||
[
|
||||
'name' => 'License',
|
||||
'name' => 'License',
|
||||
'basename' => 'Stories of the Night Skies.pages',
|
||||
'mimetype' => 'pages',
|
||||
],
|
||||
@@ -416,14 +416,14 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
// Create file record
|
||||
File::create([
|
||||
'folder_id' => $documents->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file['name'],
|
||||
'basename' => $basename,
|
||||
'type' => 'file',
|
||||
'author' => 'user',
|
||||
'mimetype' => $file['mimetype'],
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'folder_id' => $documents->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file['name'],
|
||||
'basename' => $basename,
|
||||
'type' => 'file',
|
||||
'author' => 'user',
|
||||
'mimetype' => $file['mimetype'],
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'created_at' => now()->subMinutes(rand(1, 5)),
|
||||
]);
|
||||
});
|
||||
@@ -431,12 +431,12 @@ class SetupDevEnvironment extends Command
|
||||
// Get documents to shared folder
|
||||
collect([
|
||||
[
|
||||
'name' => 'Home plan',
|
||||
'name' => 'Home plan',
|
||||
'basename' => 'Licence.pdf',
|
||||
'mimetype' => 'pdf',
|
||||
],
|
||||
[
|
||||
'name' => 'Software Licence',
|
||||
'name' => 'Software Licence',
|
||||
'basename' => 'Project Notes.pdf',
|
||||
'mimetype' => 'pdf',
|
||||
],
|
||||
@@ -449,14 +449,14 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
// Create file record
|
||||
File::create([
|
||||
'folder_id' => $shared_folder->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file['name'],
|
||||
'basename' => $basename,
|
||||
'type' => 'file',
|
||||
'author' => 'user',
|
||||
'mimetype' => $file['mimetype'],
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'folder_id' => $shared_folder->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file['name'],
|
||||
'basename' => $basename,
|
||||
'type' => 'file',
|
||||
'author' => 'user',
|
||||
'mimetype' => $file['mimetype'],
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'created_at' => now()->subMinutes(rand(1, 5)),
|
||||
]);
|
||||
});
|
||||
@@ -464,37 +464,37 @@ class SetupDevEnvironment extends Command
|
||||
// Get documents to peter's files folder
|
||||
collect([
|
||||
[
|
||||
'name' => 'Project Backup',
|
||||
'name' => 'Project Backup',
|
||||
'basename' => 'Licence.pdf',
|
||||
'mimetype' => 'pdf',
|
||||
],
|
||||
[
|
||||
'name' => 'Yearly report',
|
||||
'name' => 'Yearly report',
|
||||
'basename' => 'Project Notes.pdf',
|
||||
'mimetype' => 'pdf',
|
||||
],
|
||||
[
|
||||
'name' => 'Work Update',
|
||||
'name' => 'Work Update',
|
||||
'basename' => 'School Report.pages',
|
||||
'mimetype' => 'pages',
|
||||
],
|
||||
[
|
||||
'name' => 'Person Writing on Notebook',
|
||||
'name' => 'Person Writing on Notebook',
|
||||
'basename' => 'Stories of the Night Skies.pages',
|
||||
'mimetype' => 'pages',
|
||||
],
|
||||
[
|
||||
'name' => 'Blank Business Composition Computer',
|
||||
'name' => 'Blank Business Composition Computer',
|
||||
'basename' => 'Licence.pdf',
|
||||
'mimetype' => 'pdf',
|
||||
],
|
||||
[
|
||||
'name' => '2020 April - Export',
|
||||
'name' => '2020 April - Export',
|
||||
'basename' => 'Project Notes.pdf',
|
||||
'mimetype' => 'pdf',
|
||||
],
|
||||
[
|
||||
'name' => 'Ballpen Blur Close Up Computer',
|
||||
'name' => 'Ballpen Blur Close Up Computer',
|
||||
'basename' => 'School Report.pages',
|
||||
'mimetype' => 'pages',
|
||||
],
|
||||
@@ -507,14 +507,14 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
// Create file record
|
||||
File::create([
|
||||
'folder_id' => $peters_files->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file['name'],
|
||||
'basename' => $basename,
|
||||
'type' => 'file',
|
||||
'author' => 'visitor',
|
||||
'mimetype' => $file['mimetype'],
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'folder_id' => $peters_files->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file['name'],
|
||||
'basename' => $basename,
|
||||
'type' => 'file',
|
||||
'author' => 'visitor',
|
||||
'mimetype' => $file['mimetype'],
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'created_at' => now()->subMinutes(rand(1, 5)),
|
||||
]);
|
||||
});
|
||||
@@ -534,14 +534,14 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
// Create file record
|
||||
File::create([
|
||||
'folder_id' => $videohive->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'video',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'mp4',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'folder_id' => $videohive->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'video',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'mp4',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'created_at' => now()->subMinutes(rand(1, 5)),
|
||||
]);
|
||||
});
|
||||
@@ -558,14 +558,14 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
// Create file record
|
||||
File::create([
|
||||
'folder_id' => $video->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'video',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'mp4',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'folder_id' => $video->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'video',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'mp4',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'created_at' => now()->subMinutes(rand(1, 5)),
|
||||
]);
|
||||
});
|
||||
@@ -582,14 +582,14 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
// Create file record
|
||||
File::create([
|
||||
'folder_id' => $audio->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'audio',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'mp3',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'folder_id' => $audio->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'audio',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'mp3',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'created_at' => now()->subMinutes(rand(1, 5)),
|
||||
]);
|
||||
});
|
||||
@@ -618,15 +618,15 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
// Create file record
|
||||
File::create([
|
||||
'folder_id' => null,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'image',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'jpg',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'thumbnail' => "thumbnail-$basename",
|
||||
'folder_id' => null,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'image',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'jpg',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'thumbnail' => "thumbnail-$basename",
|
||||
'created_at' => now()->subMinutes(rand(1, 5)),
|
||||
]);
|
||||
});
|
||||
@@ -650,15 +650,15 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
// Create file record
|
||||
File::create([
|
||||
'folder_id' => $apartments->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'image',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'jpg',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'thumbnail' => "thumbnail-$basename",
|
||||
'folder_id' => $apartments->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'image',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'jpg',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'thumbnail' => "thumbnail-$basename",
|
||||
'created_at' => now()->subMinutes(rand(1, 5)),
|
||||
]);
|
||||
});
|
||||
@@ -686,15 +686,15 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
// Create file record
|
||||
File::create([
|
||||
'folder_id' => $nature->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'image',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'jpg',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'thumbnail' => "thumbnail-$basename",
|
||||
'folder_id' => $nature->id,
|
||||
'user_id' => $user->id,
|
||||
'name' => $file,
|
||||
'basename' => $basename,
|
||||
'type' => 'image',
|
||||
'author' => 'user',
|
||||
'mimetype' => 'jpg',
|
||||
'filesize' => rand(1000000, 4000000),
|
||||
'thumbnail' => "thumbnail-$basename",
|
||||
'created_at' => now()->subMinutes(rand(1, 5)),
|
||||
]);
|
||||
});
|
||||
@@ -712,13 +712,13 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
$images->each(function ($id) use ($user) {
|
||||
Share::create([
|
||||
'user_id' => $user->id,
|
||||
'item_id' => $id,
|
||||
'type' => 'file',
|
||||
'user_id' => $user->id,
|
||||
'item_id' => $id,
|
||||
'type' => 'file',
|
||||
'is_protected' => false,
|
||||
'permission' => 'editor',
|
||||
'password' => null,
|
||||
'expire_in' => null,
|
||||
'permission' => 'editor',
|
||||
'password' => null,
|
||||
'expire_in' => null,
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -729,13 +729,13 @@ class SetupDevEnvironment extends Command
|
||||
|
||||
$files->each(function ($id) use ($user) {
|
||||
Share::create([
|
||||
'user_id' => $user->id,
|
||||
'item_id' => $id,
|
||||
'type' => 'file',
|
||||
'user_id' => $user->id,
|
||||
'item_id' => $id,
|
||||
'type' => 'file',
|
||||
'is_protected' => false,
|
||||
'permission' => 'editor',
|
||||
'password' => null,
|
||||
'expire_in' => null,
|
||||
'permission' => 'editor',
|
||||
'password' => null,
|
||||
'expire_in' => null,
|
||||
]);
|
||||
});
|
||||
}
|
||||
@@ -748,108 +748,108 @@ class SetupDevEnvironment extends Command
|
||||
// Get options
|
||||
collect([
|
||||
[
|
||||
'name' => 'setup_wizard_database',
|
||||
'name' => 'setup_wizard_database',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'app_title',
|
||||
'name' => 'app_title',
|
||||
'value' => 'VueFileManager',
|
||||
],
|
||||
[
|
||||
'name' => 'app_description',
|
||||
'name' => 'app_description',
|
||||
'value' => 'Your self-hosted storage cloud software powered by Laravel and Vue',
|
||||
],
|
||||
[
|
||||
'name' => 'app_logo',
|
||||
'name' => 'app_logo',
|
||||
'value' => 'system/logo.svg',
|
||||
],
|
||||
[
|
||||
'name' => 'app_logo_horizontal',
|
||||
'name' => 'app_logo_horizontal',
|
||||
'value' => 'system/logo-horizontal.svg',
|
||||
],
|
||||
[
|
||||
'name' => 'app_favicon',
|
||||
'name' => 'app_favicon',
|
||||
'value' => 'system/favicon.png',
|
||||
],
|
||||
[
|
||||
'name' => 'app_og_image',
|
||||
'name' => 'app_og_image',
|
||||
'value' => 'system/og-image.jpg',
|
||||
],
|
||||
[
|
||||
'name' => 'app_touch_icon',
|
||||
'name' => 'app_touch_icon',
|
||||
'value' => 'system/touch-icon.png',
|
||||
],
|
||||
[
|
||||
'name' => 'google_analytics',
|
||||
'name' => 'google_analytics',
|
||||
'value' => '',
|
||||
],
|
||||
[
|
||||
'name' => 'contact_email',
|
||||
'name' => 'contact_email',
|
||||
'value' => '',
|
||||
],
|
||||
[
|
||||
'name' => 'registration',
|
||||
'name' => 'registration',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'payments_active',
|
||||
'name' => 'payments_active',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'storage_limitation',
|
||||
'name' => 'storage_limitation',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'storage_default',
|
||||
'name' => 'storage_default',
|
||||
'value' => 5,
|
||||
],
|
||||
[
|
||||
'name' => 'setup_wizard_success',
|
||||
'name' => 'setup_wizard_success',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'license',
|
||||
'name' => 'license',
|
||||
'value' => $this->license,
|
||||
],
|
||||
[
|
||||
'name' => 'purchase_code',
|
||||
'name' => 'purchase_code',
|
||||
'value' => '26b889eb-3602-4bf2-beb3-3sc378fcf484',
|
||||
],
|
||||
[
|
||||
'name' => 'billing_address',
|
||||
'name' => 'billing_address',
|
||||
'value' => 'Palo Alto 20',
|
||||
],
|
||||
[
|
||||
'name' => 'billing_city',
|
||||
'name' => 'billing_city',
|
||||
'value' => 'Palo Alto',
|
||||
],
|
||||
[
|
||||
'name' => 'billing_country',
|
||||
'name' => 'billing_country',
|
||||
'value' => 'US',
|
||||
],
|
||||
[
|
||||
'name' => 'billing_name',
|
||||
'name' => 'billing_name',
|
||||
'value' => 'VueFileManager Inc.',
|
||||
],
|
||||
[
|
||||
'name' => 'billing_phone_number',
|
||||
'name' => 'billing_phone_number',
|
||||
'value' => '312343141243214',
|
||||
],
|
||||
[
|
||||
'name' => 'billing_postal_code',
|
||||
'name' => 'billing_postal_code',
|
||||
'value' => '43213',
|
||||
],
|
||||
[
|
||||
'name' => 'billing_state',
|
||||
'name' => 'billing_state',
|
||||
'value' => 'California',
|
||||
],
|
||||
[
|
||||
'name' => 'billing_vat_number',
|
||||
'name' => 'billing_vat_number',
|
||||
'value' => '41241241234',
|
||||
],
|
||||
])->each(function ($col) {
|
||||
Setting::forceCreate([
|
||||
'name' => $col['name'],
|
||||
'name' => $col['name'],
|
||||
'value' => $col['value'],
|
||||
]);
|
||||
});
|
||||
|
||||
100
app/Console/Commands/SetupOasisEnvironment.php
Normal file
100
app/Console/Commands/SetupOasisEnvironment.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Models\Setting;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class SetupOasisEnvironment extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'setup:oasis';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Setup Oasis demo content';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$this->info('Setting up Oasis environment');
|
||||
|
||||
$this->set_oasis_data();
|
||||
|
||||
$this->info('Dispatching jobs...');
|
||||
$this->call('queue:work', [
|
||||
'--stop-when-empty' => true,
|
||||
]);
|
||||
|
||||
$this->info('Everything is done, congratulations! 🥳🥳🥳');
|
||||
}
|
||||
|
||||
public function set_oasis_data()
|
||||
{
|
||||
Setting::updateOrCreate([
|
||||
'name' => 'app_color',
|
||||
], [
|
||||
'value' => '#ae5fec',
|
||||
]);
|
||||
|
||||
// Get system images
|
||||
collect(['logo.png', 'logo-horizontal.png', 'favicon.png', 'oasis-og-image.jpg'])
|
||||
->each(function ($file) {
|
||||
Storage::putFileAs('system', storage_path("demo/oasis/$file"), $file, 'private');
|
||||
});
|
||||
|
||||
collect([
|
||||
[
|
||||
'name' => 'app_title',
|
||||
'value' => 'Oasis',
|
||||
],
|
||||
[
|
||||
'name' => 'app_description',
|
||||
'value' => 'Chytrý, bezpečný, pohodlný šanon vždy s Vámi.',
|
||||
],
|
||||
[
|
||||
'name' => 'app_logo',
|
||||
'value' => 'system/logo.png',
|
||||
],
|
||||
[
|
||||
'name' => 'app_logo_horizontal',
|
||||
'value' => 'system/logo-horizontal.png',
|
||||
],
|
||||
[
|
||||
'name' => 'app_favicon',
|
||||
'value' => 'system/favicon.png',
|
||||
],
|
||||
[
|
||||
'name' => 'app_og_image',
|
||||
'value' => 'system/oasis-og-image.jpg',
|
||||
],
|
||||
])->each(function ($option) {
|
||||
Setting::updateOrCreate([
|
||||
'name' => $option['name'],
|
||||
], [
|
||||
'value' => $option['value'],
|
||||
]);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -69,104 +69,104 @@ class SetupProdEnvironment extends Command
|
||||
// Get options
|
||||
collect([
|
||||
[
|
||||
'name' => 'setup_wizard_database',
|
||||
'name' => 'setup_wizard_database',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'app_title',
|
||||
'name' => 'app_title',
|
||||
'value' => 'VueFileManager',
|
||||
],
|
||||
[
|
||||
'name' => 'app_description',
|
||||
'name' => 'app_description',
|
||||
'value' => 'Your self-hosted storage cloud software powered by Laravel and Vue',
|
||||
],
|
||||
[
|
||||
'name' => 'app_logo',
|
||||
'name' => 'app_logo',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'app_logo_horizontal',
|
||||
'name' => 'app_logo_horizontal',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'app_favicon',
|
||||
'name' => 'app_favicon',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'app_og_image',
|
||||
'name' => 'app_og_image',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'app_touch_icon',
|
||||
'name' => 'app_touch_icon',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'google_analytics',
|
||||
'name' => 'google_analytics',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'contact_email',
|
||||
'name' => 'contact_email',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'registration',
|
||||
'name' => 'registration',
|
||||
'value' => 0,
|
||||
],
|
||||
[
|
||||
'name' => 'storage_limitation',
|
||||
'name' => 'storage_limitation',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'storage_default',
|
||||
'name' => 'storage_default',
|
||||
'value' => 5,
|
||||
],
|
||||
[
|
||||
'name' => 'setup_wizard_success',
|
||||
'name' => 'setup_wizard_success',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'license',
|
||||
'name' => 'license',
|
||||
'value' => $this->license,
|
||||
],
|
||||
[
|
||||
'name' => 'purchase_code',
|
||||
'name' => 'purchase_code',
|
||||
'value' => '26b889eb-3602-4bf2-beb3-3sc378fcf484',
|
||||
],
|
||||
[
|
||||
'name' => 'billing_address',
|
||||
'name' => 'billing_address',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_city',
|
||||
'name' => 'billing_city',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_country',
|
||||
'name' => 'billing_country',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_name',
|
||||
'name' => 'billing_name',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_phone_number',
|
||||
'name' => 'billing_phone_number',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_postal_code',
|
||||
'name' => 'billing_postal_code',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_state',
|
||||
'name' => 'billing_state',
|
||||
'value' => null,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_vat_number',
|
||||
'name' => 'billing_vat_number',
|
||||
'value' => null,
|
||||
],
|
||||
])->each(function ($col) {
|
||||
Setting::forceCreate([
|
||||
'name' => $col['name'],
|
||||
'name' => $col['name'],
|
||||
'value' => $col['value'],
|
||||
]);
|
||||
});
|
||||
@@ -178,8 +178,8 @@ class SetupProdEnvironment extends Command
|
||||
private function create_admin(): void
|
||||
{
|
||||
$user = User::forceCreate([
|
||||
'role' => 'admin',
|
||||
'email' => 'howdy@hi5ve.digital',
|
||||
'role' => 'admin',
|
||||
'email' => 'howdy@hi5ve.digital',
|
||||
'password' => bcrypt('vuefilemanager'),
|
||||
]);
|
||||
|
||||
@@ -187,7 +187,7 @@ class SetupProdEnvironment extends Command
|
||||
->settings()
|
||||
->create([
|
||||
'storage_capacity' => 5,
|
||||
'name' => 'Admin',
|
||||
'name' => 'Admin',
|
||||
]);
|
||||
|
||||
// Show user credentials
|
||||
|
||||
@@ -2,9 +2,11 @@
|
||||
namespace App\Console;
|
||||
|
||||
use App\Services\SchedulerService;
|
||||
use App\Services\Oasis\OasisService;
|
||||
use Illuminate\Console\Scheduling\Schedule;
|
||||
use App\Console\Commands\SetupDevEnvironment;
|
||||
use App\Console\Commands\SetupProdEnvironment;
|
||||
use App\Console\Commands\SetupOasisEnvironment;
|
||||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||||
|
||||
class Kernel extends ConsoleKernel
|
||||
@@ -17,6 +19,7 @@ class Kernel extends ConsoleKernel
|
||||
protected $commands = [
|
||||
SetupDevEnvironment::class,
|
||||
SetupProdEnvironment::class,
|
||||
SetupOasisEnvironment::class,
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -41,6 +44,11 @@ class Kernel extends ConsoleKernel
|
||||
}
|
||||
})->everySixHours();
|
||||
|
||||
// Oasis Drive
|
||||
$schedule->call(function () {
|
||||
resolve(OasisService::class)->order_reminder();
|
||||
})->hourly();
|
||||
|
||||
// Run queue jobs every minute
|
||||
$schedule->command('queue:work --stop-when-empty')
|
||||
->everyMinute()
|
||||
|
||||
@@ -34,10 +34,10 @@ class DashboardController extends Controller
|
||||
)->format();
|
||||
|
||||
return [
|
||||
'license' => get_setting('license'),
|
||||
'app_version' => config('vuefilemanager.version'),
|
||||
'total_users' => User::count(),
|
||||
'total_used_space' => $storage_usage,
|
||||
'license' => get_setting('license'),
|
||||
'app_version' => config('vuefilemanager.version'),
|
||||
'total_users' => User::count(),
|
||||
'total_used_space' => $storage_usage,
|
||||
'total_premium_users' => $premium_users,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ class LanguageController extends Controller
|
||||
abort_if(is_demo(), 204, 'Done.');
|
||||
|
||||
$language = Language::create([
|
||||
'name' => $request->input('name'),
|
||||
'name' => $request->input('name'),
|
||||
'locale' => $request->input('locale'),
|
||||
]);
|
||||
|
||||
|
||||
@@ -84,11 +84,11 @@ class SettingController extends Controller
|
||||
|
||||
if (! app()->runningUnitTests()) {
|
||||
setEnvironmentValue([
|
||||
'MAIL_DRIVER' => $request->driver,
|
||||
'MAIL_HOST' => $request->host,
|
||||
'MAIL_PORT' => $request->port,
|
||||
'MAIL_USERNAME' => $request->username,
|
||||
'MAIL_PASSWORD' => $request->password,
|
||||
'MAIL_DRIVER' => $request->driver,
|
||||
'MAIL_HOST' => $request->host,
|
||||
'MAIL_PORT' => $request->port,
|
||||
'MAIL_USERNAME' => $request->username,
|
||||
'MAIL_PASSWORD' => $request->password,
|
||||
'MAIL_ENCRYPTION' => $request->encryption,
|
||||
]);
|
||||
|
||||
@@ -127,20 +127,20 @@ class SettingController extends Controller
|
||||
// Get options
|
||||
collect([
|
||||
[
|
||||
'name' => 'stripe_currency',
|
||||
'name' => 'stripe_currency',
|
||||
'value' => $request->currency,
|
||||
],
|
||||
[
|
||||
'name' => 'payments_configured',
|
||||
'name' => 'payments_configured',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'payments_active',
|
||||
'name' => 'payments_active',
|
||||
'value' => 1,
|
||||
],
|
||||
])->each(function ($col) {
|
||||
Setting::forceCreate([
|
||||
'name' => $col['name'],
|
||||
'name' => $col['name'],
|
||||
'value' => $col['value'],
|
||||
]);
|
||||
});
|
||||
@@ -148,9 +148,9 @@ class SettingController extends Controller
|
||||
if (! app()->runningUnitTests()) {
|
||||
// Set stripe credentials to .env
|
||||
setEnvironmentValue([
|
||||
'CASHIER_CURRENCY' => $request->currency,
|
||||
'STRIPE_KEY' => $request->key,
|
||||
'STRIPE_SECRET' => $request->secret,
|
||||
'CASHIER_CURRENCY' => $request->currency,
|
||||
'STRIPE_KEY' => $request->key,
|
||||
'STRIPE_SECRET' => $request->secret,
|
||||
'STRIPE_WEBHOOK_SECRET' => $request->webhookSecret,
|
||||
]);
|
||||
|
||||
|
||||
@@ -177,8 +177,8 @@ class UserController extends Controller
|
||||
{
|
||||
// Create user
|
||||
$user = User::forceCreate([
|
||||
'role' => $request->role,
|
||||
'email' => $request->email,
|
||||
'role' => $request->role,
|
||||
'email' => $request->email,
|
||||
'password' => bcrypt($request->password),
|
||||
]);
|
||||
|
||||
@@ -187,8 +187,8 @@ class UserController extends Controller
|
||||
$user
|
||||
->settings()
|
||||
->create([
|
||||
'name' => $request->name,
|
||||
'avatar' => store_avatar($request, 'avatar'),
|
||||
'name' => $request->name,
|
||||
'avatar' => store_avatar($request, 'avatar'),
|
||||
'storage_capacity' => $request->storage_capacity,
|
||||
]);
|
||||
|
||||
|
||||
@@ -90,11 +90,11 @@ class AppFunctionsController extends Controller
|
||||
return view('vuefilemanager.crawler.og-view')
|
||||
->with('settings', get_settings_in_json())
|
||||
->with('metadata', [
|
||||
'url' => url('/share', ['token' => $shared->token]),
|
||||
'url' => url('/share', ['token' => $shared->token]),
|
||||
'is_protected' => $shared->is_protected,
|
||||
'user' => $shared->user->settings->name,
|
||||
'name' => $item->name,
|
||||
'size' => $shared->type === 'folder'
|
||||
'user' => $shared->user->settings->name,
|
||||
'name' => $item->name,
|
||||
'size' => $shared->type === 'folder'
|
||||
? $item->items
|
||||
: $item->filesize,
|
||||
'thumbnail' => $item->thumbnail ?? null,
|
||||
|
||||
@@ -84,11 +84,11 @@ class SetupWizardController extends Controller
|
||||
|
||||
setEnvironmentValue([
|
||||
'DB_CONNECTION' => $request->connection,
|
||||
'DB_HOST' => $request->host,
|
||||
'DB_PORT' => $request->port,
|
||||
'DB_DATABASE' => $request->name,
|
||||
'DB_USERNAME' => $request->username,
|
||||
'DB_PASSWORD' => $request->password,
|
||||
'DB_HOST' => $request->host,
|
||||
'DB_PORT' => $request->port,
|
||||
'DB_DATABASE' => $request->name,
|
||||
'DB_USERNAME' => $request->username,
|
||||
'DB_PASSWORD' => $request->password,
|
||||
]);
|
||||
|
||||
Artisan::call('config:cache');
|
||||
@@ -104,7 +104,7 @@ class SetupWizardController extends Controller
|
||||
|
||||
// Store setup wizard progress
|
||||
Setting::forceCreate([
|
||||
'name' => 'setup_wizard_database',
|
||||
'name' => 'setup_wizard_database',
|
||||
'value' => 1,
|
||||
]);
|
||||
|
||||
@@ -134,20 +134,20 @@ class SetupWizardController extends Controller
|
||||
// Set settings
|
||||
collect([
|
||||
[
|
||||
'name' => 'stripe_currency',
|
||||
'name' => 'stripe_currency',
|
||||
'value' => $request->currency,
|
||||
],
|
||||
[
|
||||
'name' => 'payments_configured',
|
||||
'name' => 'payments_configured',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'payments_active',
|
||||
'name' => 'payments_active',
|
||||
'value' => 1,
|
||||
],
|
||||
])->each(function ($col) {
|
||||
Setting::forceCreate([
|
||||
'name' => $col['name'],
|
||||
'name' => $col['name'],
|
||||
'value' => $col['value'],
|
||||
]);
|
||||
});
|
||||
@@ -155,9 +155,9 @@ class SetupWizardController extends Controller
|
||||
if (! app()->runningUnitTests()) {
|
||||
// Set stripe credentials to .env
|
||||
setEnvironmentValue([
|
||||
'CASHIER_CURRENCY' => $request->currency,
|
||||
'STRIPE_KEY' => $request->key,
|
||||
'STRIPE_SECRET' => $request->secret,
|
||||
'CASHIER_CURRENCY' => $request->currency,
|
||||
'STRIPE_KEY' => $request->key,
|
||||
'STRIPE_SECRET' => $request->secret,
|
||||
'STRIPE_WEBHOOK_SECRET' => $request->webhookSecret,
|
||||
]);
|
||||
|
||||
@@ -179,40 +179,40 @@ class SetupWizardController extends Controller
|
||||
// Get options
|
||||
collect([
|
||||
[
|
||||
'name' => 'billing_phone_number',
|
||||
'name' => 'billing_phone_number',
|
||||
'value' => $request->billing_phone_number,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_postal_code',
|
||||
'name' => 'billing_postal_code',
|
||||
'value' => $request->billing_postal_code,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_vat_number',
|
||||
'name' => 'billing_vat_number',
|
||||
'value' => $request->billing_vat_number,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_address',
|
||||
'name' => 'billing_address',
|
||||
'value' => $request->billing_address,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_country',
|
||||
'name' => 'billing_country',
|
||||
'value' => $request->billing_country,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_state',
|
||||
'name' => 'billing_state',
|
||||
'value' => $request->billing_state,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_city',
|
||||
'name' => 'billing_city',
|
||||
'value' => $request->billing_city,
|
||||
],
|
||||
[
|
||||
'name' => 'billing_name',
|
||||
'name' => 'billing_name',
|
||||
'value' => $request->billing_name,
|
||||
],
|
||||
])->each(function ($col) {
|
||||
Setting::forceCreate([
|
||||
'name' => $col['name'],
|
||||
'name' => $col['name'],
|
||||
'value' => $col['value'],
|
||||
]);
|
||||
});
|
||||
@@ -253,43 +253,43 @@ class SetupWizardController extends Controller
|
||||
'FILESYSTEM_DRIVER' => 'local',
|
||||
],
|
||||
's3' => [
|
||||
'FILESYSTEM_DRIVER' => $request->storage['driver'] ?? null,
|
||||
'AWS_ACCESS_KEY_ID' => $request->storage['key'] ?? null,
|
||||
'FILESYSTEM_DRIVER' => $request->storage['driver'] ?? null,
|
||||
'AWS_ACCESS_KEY_ID' => $request->storage['key'] ?? null,
|
||||
'AWS_SECRET_ACCESS_KEY' => $request->storage['secret'] ?? null,
|
||||
'AWS_DEFAULT_REGION' => $request->storage['region'] ?? null,
|
||||
'AWS_BUCKET' => $request->storage['bucket'] ?? null,
|
||||
'AWS_DEFAULT_REGION' => $request->storage['region'] ?? null,
|
||||
'AWS_BUCKET' => $request->storage['bucket'] ?? null,
|
||||
],
|
||||
'spaces' => [
|
||||
'FILESYSTEM_DRIVER' => $request->storage['driver'] ?? null,
|
||||
'DO_SPACES_KEY' => $request->storage['key'] ?? null,
|
||||
'DO_SPACES_SECRET' => $request->storage['secret'] ?? null,
|
||||
'FILESYSTEM_DRIVER' => $request->storage['driver'] ?? null,
|
||||
'DO_SPACES_KEY' => $request->storage['key'] ?? null,
|
||||
'DO_SPACES_SECRET' => $request->storage['secret'] ?? null,
|
||||
'DO_SPACES_ENDPOINT' => $request->storage['endpoint'] ?? null,
|
||||
'DO_SPACES_REGION' => $request->storage['region'] ?? null,
|
||||
'DO_SPACES_BUCKET' => $request->storage['bucket'] ?? null,
|
||||
'DO_SPACES_REGION' => $request->storage['region'] ?? null,
|
||||
'DO_SPACES_BUCKET' => $request->storage['bucket'] ?? null,
|
||||
],
|
||||
'wasabi' => [
|
||||
'FILESYSTEM_DRIVER' => $request->storage['driver'] ?? null,
|
||||
'WASABI_KEY' => $request->storage['key'] ?? null,
|
||||
'WASABI_SECRET' => $request->storage['secret'] ?? null,
|
||||
'WASABI_ENDPOINT' => $request->storage['endpoint'] ?? null,
|
||||
'WASABI_REGION' => $request->storage['region'] ?? null,
|
||||
'WASABI_BUCKET' => $request->storage['bucket'] ?? null,
|
||||
'WASABI_KEY' => $request->storage['key'] ?? null,
|
||||
'WASABI_SECRET' => $request->storage['secret'] ?? null,
|
||||
'WASABI_ENDPOINT' => $request->storage['endpoint'] ?? null,
|
||||
'WASABI_REGION' => $request->storage['region'] ?? null,
|
||||
'WASABI_BUCKET' => $request->storage['bucket'] ?? null,
|
||||
],
|
||||
'backblaze' => [
|
||||
'FILESYSTEM_DRIVER' => $request->storage['driver'] ?? null,
|
||||
'BACKBLAZE_KEY' => $request->storage['key'] ?? null,
|
||||
'BACKBLAZE_SECRET' => $request->storage['secret'] ?? null,
|
||||
'FILESYSTEM_DRIVER' => $request->storage['driver'] ?? null,
|
||||
'BACKBLAZE_KEY' => $request->storage['key'] ?? null,
|
||||
'BACKBLAZE_SECRET' => $request->storage['secret'] ?? null,
|
||||
'BACKBLAZE_ENDPOINT' => $request->storage['endpoint'] ?? null,
|
||||
'BACKBLAZE_REGION' => $request->storage['region'] ?? null,
|
||||
'BACKBLAZE_BUCKET' => $request->storage['bucket'] ?? null,
|
||||
'BACKBLAZE_REGION' => $request->storage['region'] ?? null,
|
||||
'BACKBLAZE_BUCKET' => $request->storage['bucket'] ?? null,
|
||||
],
|
||||
'oss' => [
|
||||
'FILESYSTEM_DRIVER' => $request->storage['driver'] ?? null,
|
||||
'OSS_ACCESS_KEY_ID' => $request->storage['key'] ?? null,
|
||||
'FILESYSTEM_DRIVER' => $request->storage['driver'] ?? null,
|
||||
'OSS_ACCESS_KEY_ID' => $request->storage['key'] ?? null,
|
||||
'OSS_SECRET_ACCESS_KEY' => $request->storage['secret'] ?? null,
|
||||
'OSS_ENDPOINT' => $request->storage['endpoint'] ?? null,
|
||||
'OSS_REGION' => $request->storage['region'] ?? null,
|
||||
'OSS_BUCKET' => $request->storage['bucket'] ?? null,
|
||||
'OSS_ENDPOINT' => $request->storage['endpoint'] ?? null,
|
||||
'OSS_REGION' => $request->storage['region'] ?? null,
|
||||
'OSS_BUCKET' => $request->storage['bucket'] ?? null,
|
||||
],
|
||||
];
|
||||
|
||||
@@ -301,11 +301,11 @@ class SetupWizardController extends Controller
|
||||
// Store credentials for mail
|
||||
// TODO: add options for mailgun
|
||||
setEnvironmentValue([
|
||||
'MAIL_DRIVER' => $request->mail['driver'],
|
||||
'MAIL_HOST' => $request->mail['host'],
|
||||
'MAIL_PORT' => $request->mail['port'],
|
||||
'MAIL_USERNAME' => $request->mail['username'],
|
||||
'MAIL_PASSWORD' => $request->mail['password'],
|
||||
'MAIL_DRIVER' => $request->mail['driver'],
|
||||
'MAIL_HOST' => $request->mail['host'],
|
||||
'MAIL_PORT' => $request->mail['port'],
|
||||
'MAIL_USERNAME' => $request->mail['username'],
|
||||
'MAIL_PASSWORD' => $request->mail['password'],
|
||||
'MAIL_ENCRYPTION' => $request->mail['encryption'],
|
||||
]);
|
||||
|
||||
@@ -325,56 +325,56 @@ class SetupWizardController extends Controller
|
||||
// Get options
|
||||
collect([
|
||||
[
|
||||
'name' => 'app_title',
|
||||
'name' => 'app_title',
|
||||
'value' => $request->title,
|
||||
],
|
||||
[
|
||||
'name' => 'app_description',
|
||||
'name' => 'app_description',
|
||||
'value' => $request->description,
|
||||
],
|
||||
[
|
||||
'name' => 'app_logo',
|
||||
'name' => 'app_logo',
|
||||
'value' => store_system_image($request, 'logo'),
|
||||
],
|
||||
[
|
||||
'name' => 'app_logo_horizontal',
|
||||
'name' => 'app_logo_horizontal',
|
||||
'value' => store_system_image($request, 'logo_horizontal'),
|
||||
],
|
||||
[
|
||||
'name' => 'app_favicon',
|
||||
'name' => 'app_favicon',
|
||||
'value' => store_system_image($request, 'favicon'),
|
||||
],
|
||||
[
|
||||
'name' => 'app_og_image',
|
||||
'name' => 'app_og_image',
|
||||
'value' => store_system_image($request, 'og_image'),
|
||||
],
|
||||
[
|
||||
'name' => 'app_touch_icon',
|
||||
'name' => 'app_touch_icon',
|
||||
'value' => store_system_image($request, 'touch_icon'),
|
||||
],
|
||||
[
|
||||
'name' => 'google_analytics',
|
||||
'name' => 'google_analytics',
|
||||
'value' => $request->googleAnalytics,
|
||||
],
|
||||
[
|
||||
'name' => 'contact_email',
|
||||
'name' => 'contact_email',
|
||||
'value' => $request->contactMail,
|
||||
],
|
||||
[
|
||||
'name' => 'registration',
|
||||
'name' => 'registration',
|
||||
'value' => $request->userRegistration,
|
||||
],
|
||||
[
|
||||
'name' => 'storage_limitation',
|
||||
'name' => 'storage_limitation',
|
||||
'value' => $request->storageLimitation,
|
||||
],
|
||||
[
|
||||
'name' => 'storage_default',
|
||||
'name' => 'storage_default',
|
||||
'value' => $request->defaultStorage ?? 5,
|
||||
],
|
||||
])->each(function ($col) {
|
||||
Setting::forceCreate([
|
||||
'name' => $col['name'],
|
||||
'name' => $col['name'],
|
||||
'value' => $col['value'],
|
||||
]);
|
||||
});
|
||||
@@ -399,18 +399,18 @@ class SetupWizardController extends Controller
|
||||
// Validate request
|
||||
// TODO: validator do requestu
|
||||
$request->validate([
|
||||
'email' => 'required|string|email|unique:users',
|
||||
'password' => 'required|string|min:6|confirmed',
|
||||
'name' => 'required|string',
|
||||
'email' => 'required|string|email|unique:users',
|
||||
'password' => 'required|string|min:6|confirmed',
|
||||
'name' => 'required|string',
|
||||
'purchase_code' => 'required|string',
|
||||
'license' => 'required|string',
|
||||
'avatar' => 'sometimes|file',
|
||||
'license' => 'required|string',
|
||||
'avatar' => 'sometimes|file',
|
||||
]);
|
||||
|
||||
// Create user
|
||||
$user = User::forceCreate([
|
||||
'role' => 'admin',
|
||||
'email' => $request->email,
|
||||
'role' => 'admin',
|
||||
'email' => $request->email,
|
||||
'password' => bcrypt($request->password),
|
||||
]);
|
||||
|
||||
@@ -418,26 +418,26 @@ class SetupWizardController extends Controller
|
||||
->settings()
|
||||
->create([
|
||||
'storage_capacity' => get_setting('storage_default') ?? 5,
|
||||
'avatar' => store_avatar($request, 'avatar'),
|
||||
'name' => $request->name,
|
||||
'avatar' => store_avatar($request, 'avatar'),
|
||||
'name' => $request->name,
|
||||
]);
|
||||
|
||||
collect([
|
||||
[
|
||||
'name' => 'setup_wizard_success',
|
||||
'name' => 'setup_wizard_success',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'license',
|
||||
'name' => 'license',
|
||||
'value' => $request->license,
|
||||
],
|
||||
[
|
||||
'name' => 'purchase_code',
|
||||
'name' => 'purchase_code',
|
||||
'value' => $request->purchase_code,
|
||||
],
|
||||
])->each(function ($col) {
|
||||
Setting::forceCreate([
|
||||
'name' => $col['name'],
|
||||
'name' => $col['name'],
|
||||
'value' => $col['value'],
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -24,7 +24,7 @@ class AuthController extends Controller
|
||||
}
|
||||
|
||||
return [
|
||||
'name' => $user->settings->name,
|
||||
'name' => $user->settings->name,
|
||||
'avatar' => $user->settings->avatar,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -180,9 +180,9 @@ class BrowseController extends Controller
|
||||
|
||||
return [
|
||||
[
|
||||
'name' => __t('home'),
|
||||
'name' => __t('home'),
|
||||
'location' => 'base',
|
||||
'folders' => $folders,
|
||||
'folders' => $folders,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ class EditItemsController extends Controller
|
||||
$zip = $this->filemanager->zip_folder($id);
|
||||
|
||||
return response([
|
||||
'url' => route('zip', $zip->id),
|
||||
'url' => route('zip', $zip->id),
|
||||
'name' => $zip->basename,
|
||||
], 201);
|
||||
}
|
||||
@@ -160,7 +160,7 @@ class EditItemsController extends Controller
|
||||
$zip = $this->filemanager->zip_files($files);
|
||||
|
||||
return response([
|
||||
'url' => route('zip', $zip->id),
|
||||
'url' => route('zip', $zip->id),
|
||||
'name' => $zip->basename,
|
||||
], 201);
|
||||
}
|
||||
|
||||
@@ -109,10 +109,10 @@ class FileAccessController extends Controller
|
||||
);
|
||||
|
||||
return $disk->download("zip/$zip->basename", $zip->basename, [
|
||||
'Content-Type' => 'application/zip',
|
||||
'Content-Length' => $disk->size("zip/$zip->basename"),
|
||||
'Accept-Ranges' => 'bytes',
|
||||
'Content-Range' => 'bytes 0-600/' . $disk->size("zip/$zip->basename"),
|
||||
'Content-Type' => 'application/zip',
|
||||
'Content-Length' => $disk->size("zip/$zip->basename"),
|
||||
'Accept-Ranges' => 'bytes',
|
||||
'Content-Range' => 'bytes 0-600/' . $disk->size("zip/$zip->basename"),
|
||||
'Content-Disposition' => "attachment; filename=$zip->basename",
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -40,13 +40,13 @@ class ShareController extends Controller
|
||||
{
|
||||
// Create shared options
|
||||
$shared = Share::create([
|
||||
'password' => $request->has('password') ? bcrypt($request->password) : null,
|
||||
'type' => $request->type === 'folder' ? 'folder' : 'file',
|
||||
'password' => $request->has('password') ? bcrypt($request->password) : null,
|
||||
'type' => $request->type === 'folder' ? 'folder' : 'file',
|
||||
'is_protected' => $request->isPassword,
|
||||
'permission' => $request->permission ?? null,
|
||||
'item_id' => $id,
|
||||
'expire_in' => $request->expiration ?? null,
|
||||
'user_id' => Auth::id(),
|
||||
'permission' => $request->permission ?? null,
|
||||
'item_id' => $id,
|
||||
'expire_in' => $request->expiration ?? null,
|
||||
'user_id' => Auth::id(),
|
||||
]);
|
||||
|
||||
// Send shared link via email
|
||||
@@ -78,10 +78,10 @@ class ShareController extends Controller
|
||||
|
||||
// Update sharing record
|
||||
$shared->update([
|
||||
'permission' => $request->permission,
|
||||
'permission' => $request->permission,
|
||||
'is_protected' => $request->protected,
|
||||
'expire_in' => $request->expiration,
|
||||
'password' => $request->password ? bcrypt($request->password) : $shared->password,
|
||||
'expire_in' => $request->expiration,
|
||||
'password' => $request->password ? bcrypt($request->password) : $shared->password,
|
||||
]);
|
||||
|
||||
// Return shared record
|
||||
|
||||
@@ -33,7 +33,7 @@ class TrashController extends Controller
|
||||
// TODO: zrefaktorovat validator do requestu
|
||||
$validator = Validator::make($request->input('items'), [
|
||||
'*.type' => 'required|string',
|
||||
'*.id' => 'string',
|
||||
'*.id' => 'string',
|
||||
]);
|
||||
|
||||
// Return error
|
||||
|
||||
125
app/Http/Controllers/Oasis/AdminController.php
Normal file
125
app/Http/Controllers/Oasis/AdminController.php
Normal file
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
namespace App\Http\Controllers\Oasis;
|
||||
|
||||
use Hash;
|
||||
use Notification;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Str;
|
||||
use App\Models\UserSettings;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Services\StripeService;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\UserResource;
|
||||
use App\Http\Requests\Admin\CreateUserByAdmin;
|
||||
use App\Http\Requests\Oasis\CreateOrderRequest;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use App\Services\Oasis\CzechRegisterSearchService;
|
||||
use App\Notifications\Oasis\PaymentRequiredNotification;
|
||||
|
||||
class AdminController extends Controller
|
||||
{
|
||||
/**
|
||||
* Get company details from czech company register
|
||||
*
|
||||
* @return array|Application|ResponseFactory|Response
|
||||
*/
|
||||
public function get_company_details()
|
||||
{
|
||||
$api = resolve(CzechRegisterSearchService::class);
|
||||
|
||||
$result = $api->findByIco(
|
||||
request()->get('ico')
|
||||
);
|
||||
|
||||
if (empty($result)) {
|
||||
return response('Not Found', 404);
|
||||
}
|
||||
|
||||
return response($result[0], 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register new client and send email with payment details
|
||||
*
|
||||
* @param CreateOrderRequest $request
|
||||
* @return Application|ResponseFactory|Response
|
||||
*/
|
||||
public function create_order(CreateOrderRequest $request)
|
||||
{
|
||||
// Create user
|
||||
$newbie = User::create([
|
||||
'email' => $request->email,
|
||||
'password' => Hash::make(Str::random()),
|
||||
]);
|
||||
|
||||
UserSettings::unguard();
|
||||
|
||||
// Store user settings
|
||||
$newbie
|
||||
->settings()
|
||||
->create([
|
||||
'storage_capacity' => 0,
|
||||
'ico' => $request->ico ?? null,
|
||||
'name' => $request->name,
|
||||
'address' => $request->address,
|
||||
'state' => $request->state,
|
||||
'city' => $request->city,
|
||||
'postal_code' => $request->postal_code,
|
||||
'country' => $request->country,
|
||||
'phone_number' => $request->phone_number ?? null,
|
||||
'timezone' => '1.0',
|
||||
]);
|
||||
|
||||
// Store subscription request
|
||||
$newbie
|
||||
->subscriptionRequest()
|
||||
->create([
|
||||
'requested_plan' => $request->plan,
|
||||
]);
|
||||
|
||||
$plan = resolve(StripeService::class)
|
||||
->getPlan($request->plan);
|
||||
|
||||
// Send notification with payment details
|
||||
$newbie->notify(new PaymentRequiredNotification(
|
||||
$newbie->subscriptionRequest,
|
||||
$plan
|
||||
));
|
||||
|
||||
return response(
|
||||
new UserResource($newbie),
|
||||
201
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new user by admin
|
||||
*
|
||||
* @param CreateUserByAdmin $request
|
||||
* @return UserResource|Application|ResponseFactory|Response
|
||||
*/
|
||||
public function create_user(CreateUserByAdmin $request)
|
||||
{
|
||||
// Create user
|
||||
$user = User::forceCreate([
|
||||
'role' => $request->role,
|
||||
'email' => $request->email,
|
||||
'password' => \Illuminate\Support\Facades\Hash::make($request->password),
|
||||
]);
|
||||
|
||||
UserSettings::unguard();
|
||||
|
||||
$user
|
||||
->settings()
|
||||
->create([
|
||||
'name' => $request->name,
|
||||
'avatar' => store_avatar($request, 'avatar'),
|
||||
'storage_capacity' => $request->storage_capacity,
|
||||
'payment_activation' => 1,
|
||||
]);
|
||||
|
||||
return response(new UserResource($user), 201);
|
||||
}
|
||||
}
|
||||
135
app/Http/Controllers/Oasis/SubscriptionController.php
Normal file
135
app/Http/Controllers/Oasis/SubscriptionController.php
Normal file
@@ -0,0 +1,135 @@
|
||||
<?php
|
||||
namespace App\Http\Controllers\Oasis;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Services\StripeService;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use App\Models\Oasis\SubscriptionRequest;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use App\Http\Requests\User\UpdateUserPasswordRequest;
|
||||
use App\Http\Resources\Oasis\SubscriptionRequestResource;
|
||||
|
||||
class SubscriptionController extends Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->stripe = resolve(StripeService::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get subscription request details
|
||||
*
|
||||
* @param SubscriptionRequest $order
|
||||
* @return Application|ResponseFactory|Response
|
||||
*/
|
||||
public function get_subscription_request(SubscriptionRequest $order)
|
||||
{
|
||||
return response(
|
||||
new SubscriptionRequestResource($order),
|
||||
200
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get setup intent to register credit card
|
||||
*
|
||||
* @param SubscriptionRequest $order
|
||||
* @return Application|ResponseFactory|Response
|
||||
*/
|
||||
public function get_setup_intent(SubscriptionRequest $order)
|
||||
{
|
||||
// Create stripe customer if not exist
|
||||
$order->user->createOrGetStripeCustomer();
|
||||
|
||||
// Return setup intent
|
||||
return response($order->user->createSetupIntent(), 201);
|
||||
}
|
||||
|
||||
/**
|
||||
* Subscribe user
|
||||
*
|
||||
* @param Request $request
|
||||
* @param SubscriptionRequest $order
|
||||
* @return Application|ResponseFactory|Response
|
||||
*/
|
||||
public function subscribe(Request $request, SubscriptionRequest $order)
|
||||
{
|
||||
// Make subscription from subscription request
|
||||
if ($order->exists) {
|
||||
// Create subscription
|
||||
$order->user
|
||||
->newSubscription('main', $order->requested_plan)
|
||||
->create(
|
||||
$this->stripe->getOrSetDefaultPaymentMethod($request, $order->user)
|
||||
);
|
||||
|
||||
// Update Subscription request
|
||||
$order->update(['status' => 'payed']);
|
||||
|
||||
$user = $order->user;
|
||||
}
|
||||
|
||||
// Make subscription after user sign up and pay for the plan
|
||||
if (! $order->exists) {
|
||||
$user = Auth::user();
|
||||
|
||||
// Set user billing
|
||||
$user->setBilling($request->billing);
|
||||
|
||||
// Update stripe customer billing info
|
||||
$this->stripe->updateCustomerDetails($user);
|
||||
|
||||
// Make subscription
|
||||
$this->stripe->createOrReplaceSubscription($request, $user);
|
||||
}
|
||||
|
||||
// Get plan
|
||||
$plan = $this->stripe->getPlan(
|
||||
$order->requested_plan ?? $request->input('plan.data.id')
|
||||
);
|
||||
|
||||
// Update user storage limit
|
||||
$user
|
||||
->settings()
|
||||
->update([
|
||||
'storage_capacity' => $plan['product']['metadata']['capacity'],
|
||||
'payment_activation' => 1,
|
||||
]);
|
||||
|
||||
return response('Done!', 204);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set user password
|
||||
*
|
||||
* @param UpdateUserPasswordRequest $request
|
||||
* @param SubscriptionRequest $order
|
||||
* @return Application|ResponseFactory|Response
|
||||
*/
|
||||
public function set_password(UpdateUserPasswordRequest $request, SubscriptionRequest $order)
|
||||
{
|
||||
// Check unauthorized action
|
||||
if ($order->status !== 'payed') {
|
||||
abort(401, "Sorry, you don't have permission.");
|
||||
}
|
||||
|
||||
// Set user password
|
||||
$order->user->password = Hash::make($request->password);
|
||||
$order->user->save();
|
||||
|
||||
// Update status
|
||||
$order->update([
|
||||
'status' => 'logged',
|
||||
]);
|
||||
|
||||
// Log in user
|
||||
Auth::login($order->user);
|
||||
$request->session()->regenerate();
|
||||
|
||||
return response('Password was set.', 204);
|
||||
}
|
||||
}
|
||||
@@ -72,7 +72,7 @@ class BrowseShareController extends Controller
|
||||
// Check password
|
||||
if (Hash::check($request->password, $shared->password)) {
|
||||
$cookie = json_encode([
|
||||
'token' => $shared->token,
|
||||
'token' => $shared->token,
|
||||
'authenticated' => true,
|
||||
]);
|
||||
|
||||
@@ -188,10 +188,10 @@ class BrowseShareController extends Controller
|
||||
|
||||
return [
|
||||
[
|
||||
'id' => $shared->item_id,
|
||||
'name' => __t('home'),
|
||||
'id' => $shared->item_id,
|
||||
'name' => __t('home'),
|
||||
'location' => 'public',
|
||||
'folders' => $folders,
|
||||
'folders' => $folders,
|
||||
],
|
||||
];
|
||||
}
|
||||
@@ -239,10 +239,10 @@ class BrowseShareController extends Controller
|
||||
}
|
||||
|
||||
return Storage::response($path, $file_pretty_name, [
|
||||
'Content-Type' => Storage::mimeType($path),
|
||||
'Content-Type' => Storage::mimeType($path),
|
||||
'Content-Length' => Storage::size($path),
|
||||
'Accept-Ranges' => 'bytes',
|
||||
'Content-Range' => 'bytes 0-600/' . Storage::size($path),
|
||||
'Accept-Ranges' => 'bytes',
|
||||
'Content-Range' => 'bytes 0-600/' . Storage::size($path),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,10 +40,10 @@ class FileSharedAccessController extends Controller
|
||||
|
||||
return $disk
|
||||
->download("zip/$zip->basename", $zip->basename, [
|
||||
'Content-Type' => 'application/zip',
|
||||
'Content-Length' => $disk->size("zip/$zip->basename"),
|
||||
'Accept-Ranges' => 'bytes',
|
||||
'Content-Range' => 'bytes 0-600/' . $disk->size("zip/$zip->basename"),
|
||||
'Content-Type' => 'application/zip',
|
||||
'Content-Length' => $disk->size("zip/$zip->basename"),
|
||||
'Accept-Ranges' => 'bytes',
|
||||
'Content-Range' => 'bytes 0-600/' . $disk->size("zip/$zip->basename"),
|
||||
'Content-Disposition' => 'attachment; filename=' . $zip->basename,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -252,7 +252,7 @@ class ManipulateShareItemsController extends Controller
|
||||
// Get file
|
||||
return response([
|
||||
'url' => route('zip_public', [
|
||||
'id' => $zip->id,
|
||||
'id' => $zip->id,
|
||||
'token' => $shared->token,
|
||||
]),
|
||||
'name' => $zip->basename,
|
||||
@@ -291,7 +291,7 @@ class ManipulateShareItemsController extends Controller
|
||||
// Get file
|
||||
return response([
|
||||
'url' => route('zip_public', [
|
||||
'id' => $zip->id,
|
||||
'id' => $zip->id,
|
||||
'token' => $shared->token,
|
||||
]),
|
||||
'name' => $zip->basename,
|
||||
|
||||
@@ -70,8 +70,8 @@ class AccountController extends Controller
|
||||
// TODO: pridat validator do requestu
|
||||
$validator = Validator::make($request->all(), [
|
||||
'avatar' => 'sometimes|file',
|
||||
'name' => 'string',
|
||||
'value' => 'string',
|
||||
'name' => 'string',
|
||||
'value' => 'string',
|
||||
]);
|
||||
|
||||
// Return error
|
||||
|
||||
@@ -70,7 +70,7 @@ class PaymentMethodsController extends Controller
|
||||
if (! $user->card_brand || ! $user->stripe_id || is_null($paymentMethodsMapped) && is_null($paymentMethodsMapped)) {
|
||||
return [
|
||||
'default' => null,
|
||||
'others' => [],
|
||||
'others' => [],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -55,14 +55,14 @@ class Kernel extends HttpKernel
|
||||
* @var array
|
||||
*/
|
||||
protected $routeMiddleware = [
|
||||
'auth' => \App\Http\Middleware\Authenticate::class,
|
||||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
||||
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
|
||||
'can' => \Illuminate\Auth\Middleware\Authorize::class,
|
||||
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
|
||||
'auth' => \App\Http\Middleware\Authenticate::class,
|
||||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
||||
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
|
||||
'can' => \Illuminate\Auth\Middleware\Authorize::class,
|
||||
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
|
||||
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
|
||||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class ChangeRoleRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'attributes' => 'required|array',
|
||||
'attributes' => 'required|array',
|
||||
'attributes.role' => 'required|string',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class ChangeStorageCapacityRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'attributes' => 'required|array',
|
||||
'attributes' => 'required|array',
|
||||
'attributes.storage_capacity' => 'required|digits_between:1,9',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -23,12 +23,12 @@ class CreateUserByAdmin extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'email' => 'required|string|email|max:255|unique:users',
|
||||
'password' => 'required|string|min:6|confirmed',
|
||||
'name' => 'required|string|max:255',
|
||||
'email' => 'required|string|email|max:255|unique:users',
|
||||
'password' => 'required|string|min:6|confirmed',
|
||||
'name' => 'required|string|max:255',
|
||||
'storage_capacity' => 'required|digits_between:1,9',
|
||||
'role' => 'required|string',
|
||||
'avatar' => 'sometimes|file',
|
||||
'role' => 'required|string',
|
||||
'avatar' => 'sometimes|file',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ class CreateFolderRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'parent_id' => 'nullable|uuid',
|
||||
'name' => 'required|string',
|
||||
'name' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,8 +24,8 @@ class DeleteItemRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'data[*].force_delete' => 'required|boolean',
|
||||
'data[*].type' => 'required|string',
|
||||
'data[*].id' => 'required|integer',
|
||||
'data[*].type' => 'required|string',
|
||||
'data[*].id' => 'required|integer',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ class MoveItemRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'to_id' => 'nullable|uuid',
|
||||
'to_id' => 'nullable|uuid',
|
||||
'items[*].type' => 'required|string',
|
||||
'items[*].id' => 'required|uuid',
|
||||
'items[*].id' => 'required|uuid',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,9 +24,9 @@ class UploadRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'filename' => 'required|string',
|
||||
'filename' => 'required|string',
|
||||
'folder_id' => 'nullable|uuid',
|
||||
'file' => ['required', 'file', new DisabledMimetypes],
|
||||
'file' => ['required', 'file', new DisabledMimetypes],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class CreateLanguageRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required|string',
|
||||
'name' => 'required|string',
|
||||
'locale' => 'required|string',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class UpdateLanguageRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required|string',
|
||||
'name' => 'required|string',
|
||||
'value' => 'required|string',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class UpdateStringRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required|string',
|
||||
'name' => 'required|string',
|
||||
'value' => 'required|string',
|
||||
];
|
||||
}
|
||||
|
||||
38
app/Http/Requests/Oasis/CreateOrderRequest.php
Normal file
38
app/Http/Requests/Oasis/CreateOrderRequest.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
namespace App\Http\Requests\Oasis;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class CreateOrderRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'ico' => 'sometimes|nullable',
|
||||
'name' => 'required|string',
|
||||
'email' => 'required|email|unique:users',
|
||||
'phone_number' => 'string|nullable',
|
||||
'address' => 'required|string',
|
||||
'state' => 'required|string',
|
||||
'city' => 'required|string',
|
||||
'postal_code' => 'required|string',
|
||||
'country' => 'required|string',
|
||||
'plan' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ class RegisterNewPaymentMethodRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'token' => 'required|string',
|
||||
'token' => 'required|string',
|
||||
'default' => 'required|boolean',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ class SendContactMessageRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'email' => 'required|email',
|
||||
'email' => 'required|email',
|
||||
'message' => 'required|string',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -23,15 +23,15 @@ class StoreAppSetupRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'title' => 'required|string',
|
||||
'description' => 'required|string',
|
||||
'logo' => 'sometimes|file',
|
||||
'logo_horizontal' => 'sometimes|file',
|
||||
'favicon' => 'sometimes|file',
|
||||
'contactMail' => 'required|email',
|
||||
'googleAnalytics' => 'sometimes|string',
|
||||
'defaultStorage' => 'sometimes|digits_between:1,9',
|
||||
'userRegistration' => 'required|boolean',
|
||||
'title' => 'required|string',
|
||||
'description' => 'required|string',
|
||||
'logo' => 'sometimes|file',
|
||||
'logo_horizontal' => 'sometimes|file',
|
||||
'favicon' => 'sometimes|file',
|
||||
'contactMail' => 'required|email',
|
||||
'googleAnalytics' => 'sometimes|string',
|
||||
'defaultStorage' => 'sometimes|digits_between:1,9',
|
||||
'userRegistration' => 'required|boolean',
|
||||
'storageLimitation' => 'required|boolean',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -24,11 +24,11 @@ class StoreDatabaseCredentialsRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'connection' => 'required|string',
|
||||
'host' => 'required|string',
|
||||
'port' => 'required|string',
|
||||
'name' => 'required|string',
|
||||
'username' => 'required|string',
|
||||
'password' => 'required|string',
|
||||
'host' => 'required|string',
|
||||
'port' => 'required|string',
|
||||
'name' => 'required|string',
|
||||
'username' => 'required|string',
|
||||
'password' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,20 +23,20 @@ class StoreEnvironmentSetupRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'storage' => 'required|array',
|
||||
'storage.driver' => 'required|string',
|
||||
'storage.key' => 'sometimes|nullable|string',
|
||||
'storage.secret' => 'sometimes|nullable|string',
|
||||
'storage' => 'required|array',
|
||||
'storage.driver' => 'required|string',
|
||||
'storage.key' => 'sometimes|nullable|string',
|
||||
'storage.secret' => 'sometimes|nullable|string',
|
||||
'storage.endpoint' => 'sometimes|nullable|string',
|
||||
'storage.region' => 'sometimes|nullable|string',
|
||||
'storage.bucket' => 'sometimes|nullable|string',
|
||||
'mail' => 'required|array',
|
||||
'mail.driver' => 'required|string',
|
||||
'mail.host' => 'required|string',
|
||||
'mail.port' => 'required|string',
|
||||
'mail.username' => 'required|string',
|
||||
'mail.password' => 'required|string',
|
||||
'mail.encryption' => 'required|string',
|
||||
'storage.region' => 'sometimes|nullable|string',
|
||||
'storage.bucket' => 'sometimes|nullable|string',
|
||||
'mail' => 'required|array',
|
||||
'mail.driver' => 'required|string',
|
||||
'mail.host' => 'required|string',
|
||||
'mail.port' => 'required|string',
|
||||
'mail.username' => 'required|string',
|
||||
'mail.password' => 'required|string',
|
||||
'mail.encryption' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,13 +24,13 @@ class StoreStripeBillingRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'billing_phone_number' => 'sometimes|nullable|string',
|
||||
'billing_postal_code' => 'required|string',
|
||||
'billing_vat_number' => 'required|string',
|
||||
'billing_address' => 'required|string',
|
||||
'billing_country' => 'required|string',
|
||||
'billing_state' => 'required|string',
|
||||
'billing_city' => 'required|string',
|
||||
'billing_name' => 'required|string',
|
||||
'billing_postal_code' => 'required|string',
|
||||
'billing_vat_number' => 'required|string',
|
||||
'billing_address' => 'required|string',
|
||||
'billing_country' => 'required|string',
|
||||
'billing_state' => 'required|string',
|
||||
'billing_city' => 'required|string',
|
||||
'billing_name' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,10 +23,10 @@ class StoreStripeCredentialsRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'currency' => 'required|string',
|
||||
'currency' => 'required|string',
|
||||
'webhookSecret' => 'required|string',
|
||||
'secret' => 'required|string',
|
||||
'key' => 'required|string',
|
||||
'secret' => 'required|string',
|
||||
'key' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,12 +23,12 @@ class StoreStripePlansRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'plans' => 'required|array',
|
||||
'plans.*.type' => 'required|string',
|
||||
'plans.*.attributes.name' => 'required|string',
|
||||
'plans.*.attributes.price' => 'required|string',
|
||||
'plans' => 'required|array',
|
||||
'plans.*.type' => 'required|string',
|
||||
'plans.*.attributes.name' => 'required|string',
|
||||
'plans.*.attributes.price' => 'required|string',
|
||||
'plans.*.attributes.description' => 'sometimes|nullable|string',
|
||||
'plans.*.attributes.capacity' => 'required|digits_between:1,9',
|
||||
'plans.*.attributes.capacity' => 'required|digits_between:1,9',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,11 +25,11 @@ class CreateShareRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'isPassword' => 'required|boolean',
|
||||
'type' => 'required|string',
|
||||
'type' => 'required|string',
|
||||
'expiration' => 'integer|nullable',
|
||||
'permission' => 'string',
|
||||
'password' => 'string',
|
||||
'emails.*' => 'email',
|
||||
'password' => 'string',
|
||||
'emails.*' => 'email',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,10 +24,10 @@ class UpdateShareRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'protected' => 'required|boolean',
|
||||
'protected' => 'required|boolean',
|
||||
'permission' => 'nullable|string',
|
||||
'expiration' => 'integer|nullable',
|
||||
'password' => 'string',
|
||||
'password' => 'string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,32 +24,32 @@ class StoreUpgradeAccountRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
// Billings
|
||||
'billing' => 'required|array',
|
||||
'billing.billing_address' => 'required|string',
|
||||
'billing.billing_city' => 'required|string',
|
||||
'billing.billing_country' => 'required|string',
|
||||
'billing.billing_name' => 'required|string',
|
||||
'billing' => 'required|array',
|
||||
'billing.billing_address' => 'required|string',
|
||||
'billing.billing_city' => 'required|string',
|
||||
'billing.billing_country' => 'required|string',
|
||||
'billing.billing_name' => 'required|string',
|
||||
'billing.billing_phone_number' => 'required|string',
|
||||
'billing.billing_postal_code' => 'required|string',
|
||||
'billing.billing_state' => 'required|string',
|
||||
'billing.billing_postal_code' => 'required|string',
|
||||
'billing.billing_state' => 'required|string',
|
||||
|
||||
// Payment
|
||||
'payment' => 'required|array',
|
||||
'payment.type' => 'required|string',
|
||||
'payment.meta' => 'required|sometimes|array',
|
||||
'payment' => 'required|array',
|
||||
'payment.type' => 'required|string',
|
||||
'payment.meta' => 'required|sometimes|array',
|
||||
'payment.meta.pm' => 'required|sometimes|string',
|
||||
|
||||
// Plan
|
||||
'plan.data' => 'required|array',
|
||||
'plan.data.attributes' => 'required|array',
|
||||
'plan.data.attributes.capacity' => 'required|digits_between:1,9',
|
||||
'plan.data' => 'required|array',
|
||||
'plan.data.attributes' => 'required|array',
|
||||
'plan.data.attributes.capacity' => 'required|digits_between:1,9',
|
||||
'plan.data.attributes.capacity_formatted' => 'required|string',
|
||||
'plan.data.attributes.currency' => 'required|string',
|
||||
'plan.data.attributes.description' => 'sometimes|string|nullable',
|
||||
'plan.data.attributes.name' => 'required|string',
|
||||
'plan.data.attributes.price' => 'required|string',
|
||||
'plan.data.id' => 'required|string',
|
||||
'plan.data.type' => 'required|string',
|
||||
'plan.data.attributes.currency' => 'required|string',
|
||||
'plan.data.attributes.description' => 'sometimes|string|nullable',
|
||||
'plan.data.attributes.name' => 'required|string',
|
||||
'plan.data.attributes.price' => 'required|string',
|
||||
'plan.data.id' => 'required|string',
|
||||
'plan.data.type' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,16 +15,16 @@ class FileResource extends JsonResource
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'type' => 'file',
|
||||
'id' => $this->id,
|
||||
'type' => 'file',
|
||||
'attributes' => [
|
||||
'name' => $this->name,
|
||||
'basename' => $this->basename,
|
||||
'mimetype' => $this->mimetype,
|
||||
'filesize' => $this->filesize,
|
||||
'type' => $this->type,
|
||||
'file_url' => $this->file_url,
|
||||
'thumbnail' => $this->thumbnail,
|
||||
'name' => $this->name,
|
||||
'basename' => $this->basename,
|
||||
'mimetype' => $this->mimetype,
|
||||
'filesize' => $this->filesize,
|
||||
'type' => $this->type,
|
||||
'file_url' => $this->file_url,
|
||||
'thumbnail' => $this->thumbnail,
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->created_at,
|
||||
],
|
||||
|
||||
@@ -20,25 +20,25 @@ class InvoiceAdminResource extends JsonResource
|
||||
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this['id'],
|
||||
'type' => 'invoices',
|
||||
'id' => $this['id'],
|
||||
'type' => 'invoices',
|
||||
'attributes' => [
|
||||
'customer' => $this['customer'],
|
||||
'total' => Cashier::formatAmount($this['total']),
|
||||
'currency' => $this['currency'],
|
||||
'customer' => $this['customer'],
|
||||
'total' => Cashier::formatAmount($this['total']),
|
||||
'currency' => $this['currency'],
|
||||
'created_at_formatted' => format_date($this['created']),
|
||||
'created_at' => $this['created'],
|
||||
'order' => $this['number'],
|
||||
'user_id' => $user->id ?? null,
|
||||
'client' => [
|
||||
'billing_address' => $this['customer_address'],
|
||||
'billing_name' => $this['customer_name'],
|
||||
'created_at' => $this['created'],
|
||||
'order' => $this['number'],
|
||||
'user_id' => $user->id ?? null,
|
||||
'client' => [
|
||||
'billing_address' => $this['customer_address'],
|
||||
'billing_name' => $this['customer_name'],
|
||||
'billing_phone_number' => $this['customer_phone'],
|
||||
],
|
||||
'bag' => [
|
||||
'amount' => $this['lines']['data'][0]['amount'],
|
||||
'currency' => $this['lines']['data'][0]['currency'],
|
||||
'type' => $this['lines']['data'][0]['type'],
|
||||
'amount' => $this['lines']['data'][0]['amount'],
|
||||
'currency' => $this['lines']['data'][0]['currency'],
|
||||
'type' => $this['lines']['data'][0]['type'],
|
||||
'description' => $this['lines']['data'][0]['description'],
|
||||
],
|
||||
'seller' => null,
|
||||
@@ -48,10 +48,10 @@ class InvoiceAdminResource extends JsonResource
|
||||
'relationships' => [
|
||||
'user' => [
|
||||
'data' => [
|
||||
'id' => $user->id,
|
||||
'type' => 'user',
|
||||
'id' => $user->id,
|
||||
'type' => 'user',
|
||||
'attributes' => [
|
||||
'name' => $user->settings->name,
|
||||
'name' => $user->settings->name,
|
||||
'avatar' => $user->settings->avatar,
|
||||
],
|
||||
],
|
||||
|
||||
@@ -19,33 +19,33 @@ class InvoiceResource extends JsonResource
|
||||
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'type' => 'invoices',
|
||||
'id' => $this->id,
|
||||
'type' => 'invoices',
|
||||
'attributes' => [
|
||||
'customer' => $this->customer,
|
||||
'total' => $this->total(),
|
||||
'currency' => $this->currency,
|
||||
'customer' => $this->customer,
|
||||
'total' => $this->total(),
|
||||
'currency' => $this->currency,
|
||||
'created_at_formatted' => format_date($this->date(), '%d. %B. %Y'),
|
||||
'created_at' => $this->created,
|
||||
'order' => $this->number,
|
||||
'user_id' => $user->id ?? null,
|
||||
'client' => [
|
||||
'billing_address' => $this->customer_address,
|
||||
'billing_name' => $this->customer_name,
|
||||
'created_at' => $this->created,
|
||||
'order' => $this->number,
|
||||
'user_id' => $user->id ?? null,
|
||||
'client' => [
|
||||
'billing_address' => $this->customer_address,
|
||||
'billing_name' => $this->customer_name,
|
||||
'billing_phone_number' => $this->customer_phone,
|
||||
],
|
||||
'seller' => null,
|
||||
'invoice_items' => $this->get_invoice_items(),
|
||||
'seller' => null,
|
||||
'invoice_items' => $this->get_invoice_items(),
|
||||
'invoice_subscriptions' => $this->get_invoice_subscriptions(),
|
||||
],
|
||||
$this->mergeWhen($user, [
|
||||
'relationships' => [
|
||||
'user' => [
|
||||
'data' => [
|
||||
'id' => $user->id,
|
||||
'type' => 'user',
|
||||
'id' => $user->id,
|
||||
'type' => 'user',
|
||||
'attributes' => [
|
||||
'name' => $user->settings->name,
|
||||
'name' => $user->settings->name,
|
||||
'avatar' => $user->settings->avatar,
|
||||
],
|
||||
],
|
||||
@@ -65,10 +65,10 @@ class InvoiceResource extends JsonResource
|
||||
|
||||
foreach ($this->subscriptions() as $item) {
|
||||
array_push($array, [
|
||||
'amount' => $item->total(),
|
||||
'amount' => $item->total(),
|
||||
'description' => $item->description,
|
||||
'currency' => $item->currency,
|
||||
'type' => $item->type,
|
||||
'currency' => $item->currency,
|
||||
'type' => $item->type,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -84,10 +84,10 @@ class InvoiceResource extends JsonResource
|
||||
|
||||
foreach ($this->invoiceItems() as $item) {
|
||||
array_push($array, [
|
||||
'amount' => $item->total(),
|
||||
'amount' => $item->total(),
|
||||
'description' => $item->description,
|
||||
'currency' => $item->currency,
|
||||
'type' => $item->type,
|
||||
'currency' => $item->currency,
|
||||
'type' => $item->type,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ class LanguageCollection extends ResourceCollection
|
||||
return [
|
||||
'data' => $this->collection,
|
||||
'meta' => [
|
||||
'current_language' => new LanguageResource($current_language),
|
||||
'current_language' => new LanguageResource($current_language),
|
||||
'reference_translations' => get_default_language_translations(),
|
||||
],
|
||||
];
|
||||
|
||||
@@ -15,14 +15,14 @@ class LanguageResource extends JsonResource
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'type' => 'languages',
|
||||
'id' => $this->id,
|
||||
'type' => 'languages',
|
||||
'attributes' => [
|
||||
'name' => $this->name,
|
||||
'locale' => $this->locale,
|
||||
'name' => $this->name,
|
||||
'locale' => $this->locale,
|
||||
'translations' => map_language_translations($this->languageTranslations),
|
||||
'updated_at' => $this->updated_at,
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->updated_at,
|
||||
'created_at' => $this->created_at,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
51
app/Http/Resources/Oasis/SubscriptionRequestResource.php
Normal file
51
app/Http/Resources/Oasis/SubscriptionRequestResource.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
namespace App\Http\Resources\Oasis;
|
||||
|
||||
use App\Services\StripeService;
|
||||
use App\Http\Resources\PricingResource;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class SubscriptionRequestResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'type' => 'subscription-requests',
|
||||
'attributes' => [
|
||||
'requested_plan' => $this->requested_plan,
|
||||
'status' => $this->status,
|
||||
'created_at_formatted' => format_date($this->created_at, '%d. %B. %Y'),
|
||||
],
|
||||
'relationships' => [
|
||||
'user' => [
|
||||
'data' => [
|
||||
'id' => $this->user->id,
|
||||
'type' => 'users',
|
||||
'attributes' => [
|
||||
'name' => $this->user->settings->name,
|
||||
'address' => $this->user->settings->address,
|
||||
'state' => $this->user->settings->state,
|
||||
'city' => $this->user->settings->city,
|
||||
'postal_code' => $this->user->settings->postal_code,
|
||||
'country' => $this->user->settings->country,
|
||||
'phone_number' => $this->user->settings->phone_number,
|
||||
'ico' => $this->user->settings->ico,
|
||||
],
|
||||
],
|
||||
],
|
||||
'plan' => new PricingResource(
|
||||
resolve(StripeService::class)->getPlan($this->requested_plan)
|
||||
),
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -15,13 +15,13 @@ class PageResource extends JsonResource
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this->slug,
|
||||
'type' => 'pages',
|
||||
'id' => $this->slug,
|
||||
'type' => 'pages',
|
||||
'attributes' => [
|
||||
'visibility' => $this->visibility,
|
||||
'title' => $this->title,
|
||||
'slug' => $this->slug,
|
||||
'content' => $this->content,
|
||||
'visibility' => $this->visibility,
|
||||
'title' => $this->title,
|
||||
'slug' => $this->slug,
|
||||
'content' => $this->content,
|
||||
'content_formatted' => add_paragraphs($this->content),
|
||||
],
|
||||
],
|
||||
|
||||
@@ -15,18 +15,18 @@ class PaymentCardResource extends JsonResource
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => (string) $this['id'],
|
||||
'type' => 'payment_method',
|
||||
'id' => (string) $this['id'],
|
||||
'type' => 'payment_method',
|
||||
'attributes' => [
|
||||
'provider' => 'stripe',
|
||||
'card_id' => $this['id'],
|
||||
'brand' => strtolower($this['card']['brand']),
|
||||
'last4' => $this['card']['last4'],
|
||||
'exp_month' => $this['card']['exp_month'],
|
||||
'exp_year' => $this['card']['exp_year'],
|
||||
'provider' => 'stripe',
|
||||
'card_id' => $this['id'],
|
||||
'brand' => strtolower($this['card']['brand']),
|
||||
'last4' => $this['card']['last4'],
|
||||
'exp_month' => $this['card']['exp_month'],
|
||||
'exp_year' => $this['card']['exp_year'],
|
||||
'created_at' => format_date($this['created_at'], '%d. %B. %Y'),
|
||||
'status' => 'active',
|
||||
'default' => 0,
|
||||
'status' => 'active',
|
||||
'default' => 0,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
@@ -15,18 +15,18 @@ class PaymentDefaultCardResource extends JsonResource
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => (string) $this['id'],
|
||||
'type' => 'payment_method',
|
||||
'id' => (string) $this['id'],
|
||||
'type' => 'payment_method',
|
||||
'attributes' => [
|
||||
'provider' => 'stripe',
|
||||
'card_id' => $this['id'],
|
||||
'brand' => isset($this['brand']) ? strtolower($this['brand']) : strtolower($this['card']['brand']),
|
||||
'last4' => isset($this['last4']) ? $this['last4'] : $this['card']['last4'],
|
||||
'exp_month' => isset($this['exp_month']) ? $this['exp_month'] : $this['card']['exp_month'],
|
||||
'exp_year' => isset($this['exp_year']) ? $this['exp_year'] : $this['card']['exp_year'],
|
||||
'provider' => 'stripe',
|
||||
'card_id' => $this['id'],
|
||||
'brand' => isset($this['brand']) ? strtolower($this['brand']) : strtolower($this['card']['brand']),
|
||||
'last4' => isset($this['last4']) ? $this['last4'] : $this['card']['last4'],
|
||||
'exp_month' => isset($this['exp_month']) ? $this['exp_month'] : $this['card']['exp_month'],
|
||||
'exp_year' => isset($this['exp_year']) ? $this['exp_year'] : $this['card']['exp_year'],
|
||||
'created_at' => format_date($this['created_at'], '%d. %B. %Y'),
|
||||
'status' => 'active',
|
||||
'default' => 0,
|
||||
'status' => 'active',
|
||||
'default' => 0,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
@@ -16,23 +16,25 @@ class PlanResource extends JsonResource
|
||||
public function toArray($request)
|
||||
{
|
||||
// Get subscribers
|
||||
$subscriber_count = Subscription::where('stripe_plan', $this['plan']['id'])->where('stripe_status', 'active')->get();
|
||||
$subscriber_count = Subscription::where('stripe_plan', $this['plan']['id'])
|
||||
->where('stripe_status', 'active')
|
||||
->get();
|
||||
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this['plan']['id'],
|
||||
'type' => 'plans',
|
||||
'id' => $this['plan']['id'],
|
||||
'type' => 'plans',
|
||||
'attributes' => [
|
||||
'subscribers' => $subscriber_count->count(),
|
||||
'status' => $this['plan']['active'] ? 1 : 0,
|
||||
'name' => $this['product']['name'],
|
||||
'description' => $this['product']['description'],
|
||||
'price' => $this['plan']['amount'],
|
||||
'price_formatted' => Cashier::formatAmount($this['plan']['amount']),
|
||||
'capacity_formatted' => format_gigabytes($this['product']['metadata']['capacity']),
|
||||
'capacity' => (int) $this['product']['metadata']['capacity'],
|
||||
'subscribers' => $subscriber_count->count(),
|
||||
'status' => $this['plan']['active'] ? 1 : 0,
|
||||
'name' => $this['product']['name'],
|
||||
'description' => $this['product']['description'],
|
||||
'price' => $this['plan']['amount'],
|
||||
'price_formatted' => Cashier::formatAmount($this['plan']['amount']),
|
||||
'capacity_formatted' => format_gigabytes($this['product']['metadata']['capacity']),
|
||||
'capacity' => (int) $this['product']['metadata']['capacity'],
|
||||
'created_at_formatted' => format_date($this['plan']['created']),
|
||||
'created_at' => $this['plan']['created'],
|
||||
'created_at' => $this['plan']['created'],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
@@ -17,16 +17,16 @@ class PricingResource extends JsonResource
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this['plan']['id'],
|
||||
'type' => 'plans',
|
||||
'id' => $this['plan']['id'],
|
||||
'type' => 'plans',
|
||||
'attributes' => [
|
||||
'name' => $this['product']['name'],
|
||||
'description' => $this['product']['description'],
|
||||
'price' => Cashier::formatAmount($this['plan']['amount']),
|
||||
'name' => $this['product']['name'],
|
||||
'description' => $this['product']['description'],
|
||||
'price' => Cashier::formatAmount($this['plan']['amount']),
|
||||
'capacity_formatted' => format_gigabytes($this['product']['metadata']['capacity']),
|
||||
'capacity' => (int) $this['product']['metadata']['capacity'],
|
||||
'currency' => config('cashier.currency'),
|
||||
'tax_rates' => resolve(StripeService::class)->get_tax_rates($this['plan']['amount']),
|
||||
'capacity' => (int) $this['product']['metadata']['capacity'],
|
||||
'currency' => config('cashier.currency'),
|
||||
'tax_rates' => resolve(StripeService::class)->get_tax_rates($this['plan']['amount']),
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
@@ -15,18 +15,18 @@ class ShareResource extends JsonResource
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => (string) $this->id,
|
||||
'type' => 'shares',
|
||||
'id' => (string) $this->id,
|
||||
'type' => 'shares',
|
||||
'attributes' => [
|
||||
'permission' => $this->permission,
|
||||
'permission' => $this->permission,
|
||||
'is_protected' => $this->is_protected,
|
||||
'item_id' => $this->item_id,
|
||||
'expire_in' => (int) $this->expire_in,
|
||||
'token' => $this->token,
|
||||
'link' => $this->link,
|
||||
'type' => $this->type,
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->updated_at,
|
||||
'item_id' => $this->item_id,
|
||||
'expire_in' => (int) $this->expire_in,
|
||||
'token' => $this->token,
|
||||
'link' => $this->link,
|
||||
'type' => $this->type,
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->updated_at,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
@@ -16,43 +16,49 @@ class UserResource extends JsonResource
|
||||
// TODO: zrefaktorovat
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'type' => 'user',
|
||||
'id' => $this->id,
|
||||
'type' => 'user',
|
||||
'attributes' => [
|
||||
'storage_capacity' => $this->settings->storage_capacity,
|
||||
'subscription' => $this->subscribed('main'),
|
||||
'incomplete_payment' => $this->hasIncompletePayment('main') ? route('cashier.payment', $this->subscription('main')->latestPayment()->id) : null,
|
||||
'stripe_customer' => is_null($this->stripe_id) ? false : true,
|
||||
'email' => is_demo() ? obfuscate_email($this->email) : $this->email,
|
||||
'role' => $this->role,
|
||||
'folders' => $this->folder_tree,
|
||||
'storage' => $this->storage,
|
||||
'storage_capacity' => $this->settings->storage_capacity,
|
||||
'subscription' => $this->subscribed('main'),
|
||||
'incomplete_payment' => $this->hasIncompletePayment('main') ? route('cashier.payment', $this->subscription('main')->latestPayment()->id) : null,
|
||||
'stripe_customer' => is_null($this->stripe_id) ? false : true,
|
||||
'email' => is_demo() ? obfuscate_email($this->email) : $this->email,
|
||||
'role' => $this->role,
|
||||
'folders' => $this->folder_tree,
|
||||
'storage' => $this->storage,
|
||||
'created_at_formatted' => format_date($this->created_at, '%d. %B. %Y'),
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->updated_at,
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->updated_at,
|
||||
|
||||
// OasisDrive
|
||||
'has_billing_profile' => $this->invoiceProfile ? true : false,
|
||||
],
|
||||
'relationships' => [
|
||||
'settings' => [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'type' => 'settings',
|
||||
'id' => $this->id,
|
||||
'type' => 'settings',
|
||||
'attributes' => [
|
||||
'avatar' => $this->settings->avatar,
|
||||
'name' => $this->settings->name,
|
||||
'address' => $this->settings->address,
|
||||
'state' => $this->settings->state,
|
||||
'city' => $this->settings->city,
|
||||
'postal_code' => $this->settings->postal_code,
|
||||
'country' => $this->settings->country,
|
||||
'avatar' => $this->settings->avatar,
|
||||
'name' => $this->settings->name,
|
||||
'address' => $this->settings->address,
|
||||
'state' => $this->settings->state,
|
||||
'city' => $this->settings->city,
|
||||
'postal_code' => $this->settings->postal_code,
|
||||
'country' => $this->settings->country,
|
||||
'phone_number' => $this->settings->phone_number,
|
||||
'timezone' => $this->settings->timezone,
|
||||
'timezone' => $this->settings->timezone,
|
||||
|
||||
// OasisDrive
|
||||
'payment_activation' => (integer) $this->settings->payment_activation,
|
||||
],
|
||||
],
|
||||
],
|
||||
'favourites' => [
|
||||
'data' => [
|
||||
'id' => $this->id,
|
||||
'type' => 'favourite_folders',
|
||||
'id' => $this->id,
|
||||
'type' => 'favourite_folders',
|
||||
'attributes' => [
|
||||
'folders' => $this->favouriteFolders->makeHidden(['pivot']),
|
||||
],
|
||||
|
||||
@@ -53,32 +53,32 @@ class UserStorageResource extends JsonResource
|
||||
|
||||
return [
|
||||
'data' => [
|
||||
'id' => (string) $this->id,
|
||||
'type' => 'storage',
|
||||
'id' => (string) $this->id,
|
||||
'type' => 'storage',
|
||||
'attributes' => [
|
||||
'used' => Metric::bytes($this->used_capacity)->format(),
|
||||
'capacity' => format_gigabytes($this->settings->storage_capacity),
|
||||
'used' => Metric::bytes($this->used_capacity)->format(),
|
||||
'capacity' => format_gigabytes($this->settings->storage_capacity),
|
||||
'percentage' => (float) get_storage_fill_percentage($this->used_capacity, $this->settings->storage_capacity),
|
||||
],
|
||||
'meta' => [
|
||||
'images' => [
|
||||
'used' => Metric::bytes($images)->format(),
|
||||
'used' => Metric::bytes($images)->format(),
|
||||
'percentage' => (float) get_storage_fill_percentage($images, $this->settings->storage_capacity),
|
||||
],
|
||||
'audios' => [
|
||||
'used' => Metric::bytes($audios)->format(),
|
||||
'used' => Metric::bytes($audios)->format(),
|
||||
'percentage' => (float) get_storage_fill_percentage($audios, $this->settings->storage_capacity),
|
||||
],
|
||||
'videos' => [
|
||||
'used' => Metric::bytes($videos)->format(),
|
||||
'used' => Metric::bytes($videos)->format(),
|
||||
'percentage' => (float) get_storage_fill_percentage($videos, $this->settings->storage_capacity),
|
||||
],
|
||||
'documents' => [
|
||||
'used' => Metric::bytes($documents)->format(),
|
||||
'used' => Metric::bytes($documents)->format(),
|
||||
'percentage' => (float) get_storage_fill_percentage($documents, $this->settings->storage_capacity),
|
||||
],
|
||||
'others' => [
|
||||
'used' => Metric::bytes($others)->format(),
|
||||
'used' => Metric::bytes($others)->format(),
|
||||
'percentage' => (float) get_storage_fill_percentage($others, $this->settings->storage_capacity),
|
||||
],
|
||||
],
|
||||
|
||||
@@ -22,19 +22,19 @@ class UserSubscription extends JsonResource
|
||||
|
||||
return [
|
||||
'data' => [
|
||||
'id' => $subscription['plan']['id'],
|
||||
'type' => 'subscription',
|
||||
'id' => $subscription['plan']['id'],
|
||||
'type' => 'subscription',
|
||||
'attributes' => [
|
||||
'incomplete' => $this->subscription('main')->incomplete(),
|
||||
'active' => $this->subscription('main')->active(),
|
||||
'canceled' => $this->subscription('main')->cancelled(),
|
||||
'name' => $subscription['product']['name'],
|
||||
'capacity' => (int) $subscription['product']['metadata']['capacity'],
|
||||
'incomplete' => $this->subscription('main')->incomplete(),
|
||||
'active' => $this->subscription('main')->active(),
|
||||
'canceled' => $this->subscription('main')->cancelled(),
|
||||
'name' => $subscription['product']['name'],
|
||||
'capacity' => (int) $subscription['product']['metadata']['capacity'],
|
||||
'capacity_formatted' => format_gigabytes($subscription['product']['metadata']['capacity']),
|
||||
'slug' => $subscription['plan']['id'],
|
||||
'canceled_at' => format_date($active_subscription['canceled_at'], '%d. %B. %Y'),
|
||||
'created_at' => format_date($active_subscription['current_period_start'], '%d. %B. %Y'),
|
||||
'ends_at' => format_date($active_subscription['current_period_end'], '%d. %B. %Y'),
|
||||
'slug' => $subscription['plan']['id'],
|
||||
'canceled_at' => format_date($active_subscription['canceled_at'], '%d. %B. %Y'),
|
||||
'created_at' => format_date($active_subscription['current_period_start'], '%d. %B. %Y'),
|
||||
'ends_at' => format_date($active_subscription['current_period_end'], '%d. %B. %Y'),
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
@@ -16,7 +16,7 @@ use Illuminate\Support\Facades\Storage;
|
||||
use Intervention\Image\ImageManagerStatic as Image;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
|
||||
if (!function_exists('obfuscate_email')) {
|
||||
if (! function_exists('obfuscate_email')) {
|
||||
/**
|
||||
* Obfuscate email
|
||||
*
|
||||
@@ -33,7 +33,7 @@ if (!function_exists('obfuscate_email')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_setting')) {
|
||||
if (! function_exists('get_setting')) {
|
||||
/**
|
||||
* Get single value from settings table
|
||||
*
|
||||
@@ -46,7 +46,7 @@ if (!function_exists('get_setting')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_settings_in_json')) {
|
||||
if (! function_exists('get_settings_in_json')) {
|
||||
/**
|
||||
* Get all app settings and return them as json
|
||||
*/
|
||||
@@ -60,7 +60,7 @@ if (!function_exists('get_settings_in_json')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_setup_status')) {
|
||||
if (! function_exists('get_setup_status')) {
|
||||
/**
|
||||
* Check if setup wizard was passed
|
||||
*
|
||||
@@ -74,7 +74,7 @@ if (!function_exists('get_setup_status')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('add_paragraphs')) {
|
||||
if (! function_exists('add_paragraphs')) {
|
||||
/**
|
||||
* Create paragraph from text
|
||||
*
|
||||
@@ -123,7 +123,7 @@ if (!function_exists('add_paragraphs')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('setEnvironmentValue')) {
|
||||
if (! function_exists('setEnvironmentValue')) {
|
||||
/**
|
||||
* Set environment value
|
||||
*
|
||||
@@ -150,11 +150,11 @@ if (!function_exists('setEnvironmentValue')) {
|
||||
|
||||
$str = substr($str, 0, -1);
|
||||
|
||||
return !(!file_put_contents($envFile, $str));
|
||||
return ! (! file_put_contents($envFile, $str));
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_invoice_number')) {
|
||||
if (! function_exists('get_invoice_number')) {
|
||||
/**
|
||||
* Get invoice number
|
||||
*
|
||||
@@ -168,11 +168,11 @@ if (!function_exists('get_invoice_number')) {
|
||||
return now()->year . '001';
|
||||
}
|
||||
|
||||
return (int)$invoices->last()->order + 1;
|
||||
return (int) $invoices->last()->order + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('cache_forget_many')) {
|
||||
if (! function_exists('cache_forget_many')) {
|
||||
/**
|
||||
* Forget many cache keys at once
|
||||
* @param $cache
|
||||
@@ -185,7 +185,7 @@ if (!function_exists('cache_forget_many')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_storage')) {
|
||||
if (! function_exists('get_storage')) {
|
||||
/**
|
||||
* Get app version from config
|
||||
*
|
||||
@@ -197,7 +197,7 @@ if (!function_exists('get_storage')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('is_storage_driver')) {
|
||||
if (! function_exists('is_storage_driver')) {
|
||||
/**
|
||||
* Check if is running AWS s3 as storage
|
||||
*
|
||||
@@ -213,7 +213,7 @@ if (!function_exists('is_storage_driver')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_version')) {
|
||||
if (! function_exists('get_version')) {
|
||||
/**
|
||||
* Get app version from config
|
||||
*
|
||||
@@ -225,7 +225,7 @@ if (!function_exists('get_version')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('is_demo')) {
|
||||
if (! function_exists('is_demo')) {
|
||||
/**
|
||||
* Check if is demo
|
||||
*
|
||||
@@ -237,7 +237,7 @@ if (!function_exists('is_demo')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('is_demo_account')) {
|
||||
if (! function_exists('is_demo_account')) {
|
||||
/**
|
||||
* Check if is demo
|
||||
*
|
||||
@@ -250,7 +250,7 @@ if (!function_exists('is_demo_account')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_item')) {
|
||||
if (! function_exists('get_item')) {
|
||||
/**
|
||||
* Get folder or file item
|
||||
*
|
||||
@@ -266,7 +266,7 @@ if (!function_exists('get_item')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_shared')) {
|
||||
if (! function_exists('get_shared')) {
|
||||
/**
|
||||
* Get shared token
|
||||
*
|
||||
@@ -280,7 +280,7 @@ if (!function_exists('get_shared')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('is_editor')) {
|
||||
if (! function_exists('is_editor')) {
|
||||
/**
|
||||
* Check if shared permission is editor
|
||||
*
|
||||
@@ -293,7 +293,7 @@ if (!function_exists('is_editor')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('is_visitor')) {
|
||||
if (! function_exists('is_visitor')) {
|
||||
/**
|
||||
* Check if shared permission is visitor
|
||||
*
|
||||
@@ -306,7 +306,7 @@ if (!function_exists('is_visitor')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('store_avatar')) {
|
||||
if (! function_exists('store_avatar')) {
|
||||
/**
|
||||
* Store user avatar to storage
|
||||
*
|
||||
@@ -316,7 +316,7 @@ if (!function_exists('store_avatar')) {
|
||||
*/
|
||||
function store_avatar($request, $name)
|
||||
{
|
||||
if (!$request->hasFile($name)) {
|
||||
if (! $request->hasFile($name)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -345,7 +345,7 @@ if (!function_exists('store_avatar')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('store_system_image')) {
|
||||
if (! function_exists('store_system_image')) {
|
||||
/**
|
||||
* Store system image
|
||||
*
|
||||
@@ -355,7 +355,7 @@ if (!function_exists('store_system_image')) {
|
||||
*/
|
||||
function store_system_image($request, $name)
|
||||
{
|
||||
if (!$request->hasFile($name)) {
|
||||
if (! $request->hasFile($name)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -372,7 +372,7 @@ if (!function_exists('store_system_image')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('make_single_input')) {
|
||||
if (! function_exists('make_single_input')) {
|
||||
/**
|
||||
* Make input from request
|
||||
*
|
||||
@@ -392,7 +392,7 @@ if (!function_exists('make_single_input')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('format_gigabytes')) {
|
||||
if (! function_exists('format_gigabytes')) {
|
||||
/**
|
||||
* Format integer to gigabytes
|
||||
*
|
||||
@@ -409,7 +409,7 @@ if (!function_exists('format_gigabytes')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('format_megabytes')) {
|
||||
if (! function_exists('format_megabytes')) {
|
||||
/**
|
||||
* Format string to formated megabytes string
|
||||
*
|
||||
@@ -430,7 +430,7 @@ if (!function_exists('format_megabytes')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('format_bytes')) {
|
||||
if (! function_exists('format_bytes')) {
|
||||
/**
|
||||
* Convert megabytes to bytes
|
||||
*
|
||||
@@ -443,7 +443,7 @@ if (!function_exists('format_bytes')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_storage_fill_percentage')) {
|
||||
if (! function_exists('get_storage_fill_percentage')) {
|
||||
/**
|
||||
* Get storage usage in percent
|
||||
*
|
||||
@@ -464,11 +464,11 @@ if (!function_exists('get_storage_fill_percentage')) {
|
||||
}
|
||||
|
||||
// Return in 2 decimal
|
||||
return number_format((float)$progress, 2, '.', '');
|
||||
return number_format((float) $progress, 2, '.', '');
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('user_storage_percentage')) {
|
||||
if (! function_exists('user_storage_percentage')) {
|
||||
/**
|
||||
* Get user capacity fill by percentage
|
||||
*
|
||||
@@ -490,7 +490,7 @@ if (!function_exists('user_storage_percentage')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('recursiveFind')) {
|
||||
if (! function_exists('recursiveFind')) {
|
||||
/**
|
||||
* Find all key values in recursive array
|
||||
*
|
||||
@@ -514,7 +514,7 @@ if (!function_exists('recursiveFind')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('appeared_once')) {
|
||||
if (! function_exists('appeared_once')) {
|
||||
/**
|
||||
* Get values which appears only once in array
|
||||
* @param $arr
|
||||
@@ -536,7 +536,7 @@ if (!function_exists('appeared_once')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('filter_folders_ids')) {
|
||||
if (! function_exists('filter_folders_ids')) {
|
||||
/**
|
||||
* @param $folders
|
||||
* @param string $by_column
|
||||
@@ -550,7 +550,7 @@ if (!function_exists('filter_folders_ids')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('format_date')) {
|
||||
if (! function_exists('format_date')) {
|
||||
/**
|
||||
* Format localized date
|
||||
*
|
||||
@@ -566,7 +566,7 @@ if (!function_exists('format_date')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_file_type')) {
|
||||
if (! function_exists('get_file_type')) {
|
||||
/**
|
||||
* Get file type from mimetype
|
||||
*
|
||||
@@ -586,7 +586,7 @@ if (!function_exists('get_file_type')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('map_language_translations')) {
|
||||
if (! function_exists('map_language_translations')) {
|
||||
/**
|
||||
* It map language translations as language key and language value
|
||||
*
|
||||
@@ -601,7 +601,7 @@ if (!function_exists('map_language_translations')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_file_type_from_mimetype')) {
|
||||
if (! function_exists('get_file_type_from_mimetype')) {
|
||||
/**
|
||||
* Get file type from mimetype
|
||||
*
|
||||
@@ -614,7 +614,7 @@ if (!function_exists('get_file_type_from_mimetype')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_pretty_name')) {
|
||||
if (! function_exists('get_pretty_name')) {
|
||||
/**
|
||||
* Format pretty name file
|
||||
*
|
||||
@@ -639,7 +639,7 @@ if (!function_exists('get_pretty_name')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_image_meta_data')) {
|
||||
if (! function_exists('get_image_meta_data')) {
|
||||
/**
|
||||
* Get exif data from jpeg image
|
||||
*
|
||||
@@ -659,7 +659,7 @@ if (!function_exists('get_image_meta_data')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_default_language_translations')) {
|
||||
if (! function_exists('get_default_language_translations')) {
|
||||
/**
|
||||
* @return Collection
|
||||
*/
|
||||
@@ -673,7 +673,7 @@ if (!function_exists('get_default_language_translations')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('is_dev')) {
|
||||
if (! function_exists('is_dev')) {
|
||||
/**
|
||||
* Check if app is in dev mode
|
||||
*
|
||||
@@ -685,7 +685,7 @@ if (!function_exists('is_dev')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('seems_utf8')) {
|
||||
if (! function_exists('seems_utf8')) {
|
||||
/**
|
||||
* @param $str
|
||||
* @return bool
|
||||
@@ -730,7 +730,7 @@ if (!function_exists('seems_utf8')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('remove_accents')) {
|
||||
if (! function_exists('remove_accents')) {
|
||||
/**
|
||||
* Converts all accent characters to ASCII characters.
|
||||
*
|
||||
@@ -741,7 +741,7 @@ if (!function_exists('remove_accents')) {
|
||||
*/
|
||||
function remove_accents($string)
|
||||
{
|
||||
if (!preg_match('/[\x80-\xff]/', $string)) {
|
||||
if (! preg_match('/[\x80-\xff]/', $string)) {
|
||||
return $string;
|
||||
}
|
||||
|
||||
@@ -844,7 +844,7 @@ if (!function_exists('remove_accents')) {
|
||||
// Euro Sign
|
||||
chr(226) . chr(130) . chr(172) => 'E',
|
||||
// GBP (Pound) Sign
|
||||
chr(194) . chr(163) => '',];
|
||||
chr(194) . chr(163) => '', ];
|
||||
|
||||
$string = strtr($string, $chars);
|
||||
} else {
|
||||
@@ -872,8 +872,7 @@ if (!function_exists('remove_accents')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('get_files_for_zip')) {
|
||||
|
||||
if (! function_exists('get_files_for_zip')) {
|
||||
/**
|
||||
* Get all files from folder and get their folder location in VueFileManager directories
|
||||
*
|
||||
@@ -885,7 +884,7 @@ if (!function_exists('get_files_for_zip')) {
|
||||
function get_files_for_zip($folders, $files, $path = [])
|
||||
{
|
||||
// Return file list
|
||||
if (!isset($folders->folders)) {
|
||||
if (! isset($folders->folders)) {
|
||||
return $files->unique()->values()->all();
|
||||
}
|
||||
|
||||
@@ -913,7 +912,7 @@ if (!function_exists('get_files_for_zip')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('set_time_by_user_timezone')) {
|
||||
if (! function_exists('set_time_by_user_timezone')) {
|
||||
/**
|
||||
* Set time by user timezone GMT
|
||||
*
|
||||
@@ -934,7 +933,7 @@ if (!function_exists('set_time_by_user_timezone')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('__t')) {
|
||||
if (! function_exists('__t')) {
|
||||
/**
|
||||
* Translate the given message.
|
||||
* @param $key
|
||||
@@ -955,12 +954,12 @@ if (!function_exists('__t')) {
|
||||
|
||||
// Get language strings
|
||||
$strings = cache()->rememberForever("language-translations-$locale", function () use ($locale) {
|
||||
try {
|
||||
return Language::whereLocale($locale)->firstOrFail()->languageTranslations;
|
||||
} catch (QueryException | ModelNotFoundException $e) {
|
||||
return null;
|
||||
}
|
||||
}) ?? get_default_language_translations();
|
||||
try {
|
||||
return Language::whereLocale($locale)->firstOrFail()->languageTranslations;
|
||||
} catch (QueryException | ModelNotFoundException $e) {
|
||||
return null;
|
||||
}
|
||||
}) ?? get_default_language_translations();
|
||||
|
||||
// Find the string by key
|
||||
$string = $strings->firstWhere('key', $key)->value ?? $strings->get($key);
|
||||
@@ -973,7 +972,7 @@ if (!function_exists('__t')) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('replace_occurrence')) {
|
||||
if (! function_exists('replace_occurrence')) {
|
||||
/**
|
||||
* Replace string occurrence in __t() by their values
|
||||
*
|
||||
|
||||
@@ -136,10 +136,10 @@ class File extends Model
|
||||
: get_pretty_name($this->attributes['basename'], $this->attributes['name'], $this->attributes['mimetype']);
|
||||
|
||||
$header = [
|
||||
'ResponseAcceptRanges' => 'bytes',
|
||||
'ResponseContentType' => $this->attributes['mimetype'],
|
||||
'ResponseContentLength' => $this->attributes['filesize'],
|
||||
'ResponseContentRange' => 'bytes 0-600/' . $this->attributes['filesize'],
|
||||
'ResponseAcceptRanges' => 'bytes',
|
||||
'ResponseContentType' => $this->attributes['mimetype'],
|
||||
'ResponseContentLength' => $this->attributes['filesize'],
|
||||
'ResponseContentRange' => 'bytes 0-600/' . $this->attributes['filesize'],
|
||||
'ResponseContentDisposition' => 'attachment; filename=' . $file_pretty_name,
|
||||
];
|
||||
|
||||
@@ -167,8 +167,8 @@ class File extends Model
|
||||
$name = Str::slug($array['name'], ' ');
|
||||
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'name' => $name,
|
||||
'id' => $this->id,
|
||||
'name' => $name,
|
||||
'nameNgrams' => utf8_encode((new TNTIndexer)->buildTrigrams(implode(', ', [$name]))),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -64,8 +64,8 @@ class Folder extends Model
|
||||
$name = Str::slug($array['name'], ' ');
|
||||
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'name' => $name,
|
||||
'id' => $this->id,
|
||||
'name' => $name,
|
||||
'nameNgrams' => utf8_encode((new TNTIndexer)->buildTrigrams(implode(', ', [$name]))),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -12,9 +12,14 @@ class Invoice extends Model
|
||||
protected $casts = [
|
||||
'seller' => 'array',
|
||||
'client' => 'array',
|
||||
'bag' => 'array',
|
||||
'bag' => 'array',
|
||||
];
|
||||
|
||||
public function getMimetype()
|
||||
{
|
||||
return 'pdf';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasOne
|
||||
*/
|
||||
|
||||
36
app/Models/Oasis/SubscriptionRequest.php
Normal file
36
app/Models/Oasis/SubscriptionRequest.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
namespace App\Models\Oasis;
|
||||
|
||||
use Auth;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
class SubscriptionRequest extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'requested_plan', 'creator', 'status',
|
||||
];
|
||||
|
||||
public $incrementing = false;
|
||||
|
||||
protected $keyType = 'string';
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->hasOne(User::class, 'id', 'user_id');
|
||||
}
|
||||
|
||||
protected static function boot()
|
||||
{
|
||||
parent::boot();
|
||||
|
||||
static::creating(function ($order) {
|
||||
$order->id = (string) Str::uuid();
|
||||
$order->creator = Auth::user()->email ?? $order->creator;
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace App\Models;
|
||||
|
||||
use App\Traits\Oasis;
|
||||
use ByteUnits\Metric;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravel\Cashier\Billable;
|
||||
@@ -11,12 +12,14 @@ use Kyslik\ColumnSortable\Sortable;
|
||||
use App\Notifications\ResetPassword;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Makingcg\Invoice\App\Traits\Invoiceable;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
|
||||
class User extends Authenticatable
|
||||
{
|
||||
use Notifiable, Billable, Sortable, HasFactory, HasApiTokens;
|
||||
use Oasis, Invoiceable;
|
||||
|
||||
protected $guarded = [
|
||||
'id',
|
||||
@@ -32,7 +35,7 @@ class User extends Authenticatable
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'id' => 'string',
|
||||
'id' => 'string',
|
||||
'email_verified_at' => 'datetime',
|
||||
];
|
||||
|
||||
@@ -85,15 +88,15 @@ class User extends Authenticatable
|
||||
// Get user storage usage
|
||||
if (! $is_storage_limit) {
|
||||
return [
|
||||
'used' => $this->used_capacity,
|
||||
'used' => $this->used_capacity,
|
||||
'used_formatted' => Metric::bytes($this->used_capacity)->format(),
|
||||
];
|
||||
}
|
||||
|
||||
return [
|
||||
'used' => (float) get_storage_fill_percentage($this->used_capacity, $this->settings->storage_capacity),
|
||||
'used_formatted' => get_storage_fill_percentage($this->used_capacity, $this->settings->storage_capacity) . '%',
|
||||
'capacity' => $this->settings->storage_capacity,
|
||||
'used' => (float) get_storage_fill_percentage($this->used_capacity, $this->settings->storage_capacity),
|
||||
'used_formatted' => get_storage_fill_percentage($this->used_capacity, $this->settings->storage_capacity) . '%',
|
||||
'capacity' => $this->settings->storage_capacity,
|
||||
'capacity_formatted' => format_gigabytes($this->settings->storage_capacity),
|
||||
];
|
||||
}
|
||||
@@ -135,13 +138,13 @@ class User extends Authenticatable
|
||||
public function setBilling($billing)
|
||||
{
|
||||
$this->settings()->update([
|
||||
'address' => $billing['billing_address'],
|
||||
'city' => $billing['billing_city'],
|
||||
'country' => $billing['billing_country'],
|
||||
'name' => $billing['billing_name'],
|
||||
'address' => $billing['billing_address'],
|
||||
'city' => $billing['billing_city'],
|
||||
'country' => $billing['billing_country'],
|
||||
'name' => $billing['billing_name'],
|
||||
'phone_number' => $billing['billing_phone_number'],
|
||||
'postal_code' => $billing['billing_postal_code'],
|
||||
'state' => $billing['billing_state'],
|
||||
'postal_code' => $billing['billing_postal_code'],
|
||||
'state' => $billing['billing_state'],
|
||||
]);
|
||||
|
||||
return $this->settings;
|
||||
|
||||
72
app/Notifications/Oasis/PaymentRequiredNotification.php
Normal file
72
app/Notifications/Oasis/PaymentRequiredNotification.php
Normal file
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
namespace App\Notifications\Oasis;
|
||||
|
||||
use Laravel\Cashier\Cashier;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Notifications\Notification;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
|
||||
class PaymentRequiredNotification extends Notification
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
/**
|
||||
* Create a new notification instance.
|
||||
*
|
||||
* @param $order
|
||||
* @param $plan
|
||||
*/
|
||||
public function __construct($order, $plan)
|
||||
{
|
||||
$this->order = $order;
|
||||
$this->plan = $plan;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the notification's delivery channels.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function via($notifiable)
|
||||
{
|
||||
return ['mail'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mail representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return \Illuminate\Notifications\Messages\MailMessage
|
||||
*/
|
||||
public function toMail($notifiable)
|
||||
{
|
||||
$url = url("/platba/{$this->order['id']}");
|
||||
|
||||
return (new MailMessage)
|
||||
->subject(__t('mail_order_subject'))
|
||||
->greeting(__t('mail_greeting'))
|
||||
->line(__t('mail_order_line_1'))
|
||||
->line(__t('mail_tariff', [
|
||||
'name' => $this->plan['product']['name'],
|
||||
'storage' => Cashier::formatAmount($this->plan['plan']['amount']),
|
||||
'price' => format_gigabytes($this->plan['product']['metadata']['capacity']),
|
||||
]))
|
||||
->action(__t('mail_activation_action'), $url)
|
||||
->line(__t('mail_order_line_2'))
|
||||
->line(__t('mail_order_line_3'))
|
||||
->salutation(__t('mail_salutation'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($notifiable)
|
||||
{
|
||||
return [
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
namespace App\Notifications\Oasis;
|
||||
|
||||
use Laravel\Cashier\Cashier;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Notifications\Notification;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
|
||||
class ReminderForPaymentRequiredNotification extends Notification
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
/**
|
||||
* Create a new notification instance.
|
||||
*
|
||||
* @param $order
|
||||
* @param $plan
|
||||
*/
|
||||
public function __construct($order, $plan)
|
||||
{
|
||||
$this->order = $order;
|
||||
$this->plan = $plan;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the notification's delivery channels.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function via($notifiable)
|
||||
{
|
||||
return ['mail'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mail representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return \Illuminate\Notifications\Messages\MailMessage
|
||||
*/
|
||||
public function toMail($notifiable)
|
||||
{
|
||||
$url = url("/platba/{$this->order['id']}");
|
||||
|
||||
return (new MailMessage)
|
||||
->subject(__t('mail_order_subject'))
|
||||
->greeting(__t('mail_greeting'))
|
||||
->line(__t('mail_reminder_line_1'))
|
||||
->line(__t('mail_tariff', [
|
||||
'name' => $this->plan['product']['name'],
|
||||
'storage' => Cashier::formatAmount($this->plan['plan']['amount']),
|
||||
'price' => format_gigabytes($this->plan['product']['metadata']['capacity']),
|
||||
]))
|
||||
->line(__t('mail_reminder_line_2'))
|
||||
->action(__t('mail_activation_action'), $url)
|
||||
->line(__t('mail_reminder_line_3'))
|
||||
->salutation(__t('mail_salutation'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($notifiable)
|
||||
{
|
||||
return [
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,8 @@ class RouteServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function map()
|
||||
{
|
||||
$this->mapOasisRoutes();
|
||||
|
||||
$this->mapApiRoutes();
|
||||
|
||||
$this->mapShareRoutes();
|
||||
@@ -130,4 +132,11 @@ class RouteServiceProvider extends ServiceProvider
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/setup.php'));
|
||||
}
|
||||
|
||||
// Oasis
|
||||
protected function mapOasisRoutes()
|
||||
{
|
||||
Route::namespace($this->namespace)
|
||||
->group(base_path('routes/oasis.php'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,15 +20,15 @@ class DemoService
|
||||
public function create_folder($request)
|
||||
{
|
||||
return [
|
||||
'user_id' => 1,
|
||||
'id' => Str::uuid(),
|
||||
'parent_id' => random_int(1000, 9999),
|
||||
'name' => $request->name,
|
||||
'type' => 'folder',
|
||||
'author' => $request->user() ? 'user' : 'visitor',
|
||||
'items' => '0',
|
||||
'color' => isset($request->icon['color']) ? $request->icon['color'] : null,
|
||||
'emoji' => isset($request->icon['emoji']) ? $request->icon['emoji'] : null,
|
||||
'user_id' => 1,
|
||||
'id' => Str::uuid(),
|
||||
'parent_id' => random_int(1000, 9999),
|
||||
'name' => $request->name,
|
||||
'type' => 'folder',
|
||||
'author' => $request->user() ? 'user' : 'visitor',
|
||||
'items' => '0',
|
||||
'color' => isset($request->icon['color']) ? $request->icon['color'] : null,
|
||||
'emoji' => isset($request->icon['emoji']) ? $request->icon['emoji'] : null,
|
||||
'updated_at' => now()->format('j M Y \a\t H:i'),
|
||||
'created_at' => now()->format('j M Y \a\t H:i'),
|
||||
];
|
||||
@@ -63,7 +63,7 @@ class DemoService
|
||||
}
|
||||
|
||||
return [
|
||||
'id' => $request->id,
|
||||
'id' => $request->id,
|
||||
'name' => $request->name,
|
||||
'type' => $request->type,
|
||||
];
|
||||
@@ -86,16 +86,16 @@ class DemoService
|
||||
$filetype = get_file_type($file->getMimeType());
|
||||
|
||||
return [
|
||||
'id' => Str::uuid(),
|
||||
'folder_id' => $request->parent_id,
|
||||
'thumbnail' => 'data:' . $request->file('file')->getMimeType() . ';base64, ' . base64_encode(file_get_contents($request->file('file'))),
|
||||
'name' => $file->getClientOriginalName(),
|
||||
'basename' => $filename,
|
||||
'mimetype' => $file->getClientOriginalExtension(),
|
||||
'filesize' => Metric::bytes($filesize)->format(),
|
||||
'type' => $filetype,
|
||||
'file_url' => 'https://vuefilemanager.hi5ve.digital/assets/vue-file-manager-preview.jpg',
|
||||
'author' => $request->user() ? 'user' : 'visitor',
|
||||
'id' => Str::uuid(),
|
||||
'folder_id' => $request->parent_id,
|
||||
'thumbnail' => 'data:' . $request->file('file')->getMimeType() . ';base64, ' . base64_encode(file_get_contents($request->file('file'))),
|
||||
'name' => $file->getClientOriginalName(),
|
||||
'basename' => $filename,
|
||||
'mimetype' => $file->getClientOriginalExtension(),
|
||||
'filesize' => Metric::bytes($filesize)->format(),
|
||||
'type' => $filetype,
|
||||
'file_url' => 'https://vuefilemanager.hi5ve.digital/assets/vue-file-manager-preview.jpg',
|
||||
'author' => $request->user() ? 'user' : 'visitor',
|
||||
'created_at' => now()->format('j M Y \a\t H:i'),
|
||||
'updated_at' => now()->format('j M Y \a\t H:i'),
|
||||
];
|
||||
|
||||
@@ -88,9 +88,9 @@ class FileManagerService
|
||||
|
||||
// Store zip record
|
||||
return Zip::create([
|
||||
'user_id' => $shared->user_id ?? Auth::id(),
|
||||
'user_id' => $shared->user_id ?? Auth::id(),
|
||||
'shared_token' => $shared->token ?? null,
|
||||
'basename' => $zip_name,
|
||||
'basename' => $zip_name,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -146,9 +146,9 @@ class FileManagerService
|
||||
|
||||
// Store zip record
|
||||
return Zip::create([
|
||||
'user_id' => $shared->user_id ?? Auth::id(),
|
||||
'user_id' => $shared->user_id ?? Auth::id(),
|
||||
'shared_token' => $shared->token ?? null,
|
||||
'basename' => $zip_name,
|
||||
'basename' => $zip_name,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -163,11 +163,11 @@ class FileManagerService
|
||||
{
|
||||
return Folder::create([
|
||||
'parent_id' => $request->parent_id,
|
||||
'author' => $shared ? 'visitor' : 'user',
|
||||
'user_id' => $shared ? $shared->user_id : Auth::id(),
|
||||
'name' => $request->name,
|
||||
'color' => $request->color ?? null,
|
||||
'emoji' => $request->emoji ?? null,
|
||||
'author' => $shared ? 'visitor' : 'user',
|
||||
'user_id' => $shared ? $shared->user_id : Auth::id(),
|
||||
'name' => $request->name,
|
||||
'color' => $request->color ?? null,
|
||||
'emoji' => $request->emoji ?? null,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -398,16 +398,16 @@ class FileManagerService
|
||||
|
||||
// Return new file
|
||||
return UserFile::create([
|
||||
'mimetype' => get_file_type_from_mimetype($file_mimetype),
|
||||
'type' => get_file_type($file_mimetype),
|
||||
'mimetype' => get_file_type_from_mimetype($file_mimetype),
|
||||
'type' => get_file_type($file_mimetype),
|
||||
'folder_id' => $request->folder_id,
|
||||
'metadata' => $metadata,
|
||||
'name' => $request->filename,
|
||||
'basename' => $disk_file_name,
|
||||
'author' => $shared ? 'visitor' : 'user',
|
||||
'metadata' => $metadata,
|
||||
'name' => $request->filename,
|
||||
'basename' => $disk_file_name,
|
||||
'author' => $shared ? 'visitor' : 'user',
|
||||
'thumbnail' => $thumbnail,
|
||||
'filesize' => $file_size,
|
||||
'user_id' => $user_id,
|
||||
'filesize' => $file_size,
|
||||
'user_id' => $user_id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ class HelperService
|
||||
// TODO: replace local files with temp folder
|
||||
$uploader = new MultipartUploader($client, config('filesystems.disks.local.root') . "/files/$user_id/$file", [
|
||||
'bucket' => $adapter->getBucket(),
|
||||
'key' => "files/$user_id/$file",
|
||||
'key' => "files/$user_id/$file",
|
||||
]);
|
||||
|
||||
try {
|
||||
@@ -228,10 +228,10 @@ class HelperService
|
||||
|
||||
return response()
|
||||
->download(Storage::path($path), $pretty_name, [
|
||||
'Accept-Ranges' => 'bytes',
|
||||
'Content-Type' => Storage::mimeType($path),
|
||||
'Content-Length' => Storage::size($path),
|
||||
'Content-Range' => 'bytes 0-600/' . Storage::size($path),
|
||||
'Accept-Ranges' => 'bytes',
|
||||
'Content-Type' => Storage::mimeType($path),
|
||||
'Content-Length' => Storage::size($path),
|
||||
'Content-Range' => 'bytes 0-600/' . Storage::size($path),
|
||||
'Content-Disposition' => "attachment; filename=$pretty_name",
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -28,9 +28,9 @@ class LanguageService
|
||||
$translations = $translations[strtolower($license)]
|
||||
->map(function ($value, $key) use ($locale) {
|
||||
return [
|
||||
'lang' => $locale,
|
||||
'lang' => $locale,
|
||||
'value' => $value,
|
||||
'key' => $key,
|
||||
'key' => $key,
|
||||
];
|
||||
})->toArray();
|
||||
|
||||
@@ -79,9 +79,9 @@ class LanguageService
|
||||
$translations = $newbies
|
||||
->map(function ($value, $key) use ($locale) {
|
||||
return [
|
||||
'lang' => $locale,
|
||||
'lang' => $locale,
|
||||
'value' => $value,
|
||||
'key' => $key,
|
||||
'key' => $key,
|
||||
];
|
||||
})->toArray();
|
||||
|
||||
|
||||
253
app/Services/Oasis/CzechRegisterSearchService.php
Normal file
253
app/Services/Oasis/CzechRegisterSearchService.php
Normal file
@@ -0,0 +1,253 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Parser pre vyhladavanie a vypis z obchodneho registra ČR
|
||||
* Lookup service for Czech commercial register (www.justice.cz)
|
||||
*
|
||||
* Version 1.0.0 (released 05.12.2019)
|
||||
* (c) 2019 lubosdz@gmail.com
|
||||
*
|
||||
* ------------------------------------------------------------------
|
||||
* Disclaimer / Prehlásenie:
|
||||
* Kód poskytnutý je bez záruky a môže kedykoľvek prestať fungovať.
|
||||
* Jeho funkčnosť je striktne naviazaná na generovanú štruktúru HTML elementov.
|
||||
* Autor nie je povinný udržiavať kód aktuálny a funkčný, ani neposkytuje ku nemu žiadnu podporu.
|
||||
* Autor nezodpovedá za nesprávne použitie kódu.
|
||||
* ------------------------------------------------------------------
|
||||
*
|
||||
* Usage example:
|
||||
* --------------
|
||||
* $connector = new ConnectorJusticeCz;
|
||||
* $out = $connector->findByNazev('auto');
|
||||
* $out = $connector->findByIco('44315945');
|
||||
* echo ''.print_r($out, 1).'';
|
||||
*/
|
||||
namespace App\Services\Oasis;
|
||||
|
||||
class CzechRegisterSearchService
|
||||
{
|
||||
/**
|
||||
* @var string Target server URL base
|
||||
*/
|
||||
const URL_SERVER = 'https://or.justice.cz/ias/ui/rejstrik-$firma';
|
||||
|
||||
/**
|
||||
* @var int Max. dlzka nazvu pre autocomplete options
|
||||
*/
|
||||
public $labelMaxChars = 30;
|
||||
|
||||
/**
|
||||
* Vyhlada zoznam subjektov podla presneho ICO, ciastkove ICO nie je povolene
|
||||
* @param string $ico 8-miestne cislo, e.g. 29243831 or 64612023
|
||||
*/
|
||||
public function findByIco($ico)
|
||||
{
|
||||
$response = [];
|
||||
$ico = preg_replace('/[^\d]/', '', $ico);
|
||||
|
||||
if (preg_match('/^\d{8}$/', $ico)) {
|
||||
$url = self::URL_SERVER . '?ico=' . $ico;
|
||||
$response = file_get_contents($url);
|
||||
$response = self::extractSubjects($response);
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vyhlada zoznam subjektov podla ciastkoveho nazvu
|
||||
* @param string $nazev , e.g. "pojisteni"
|
||||
*/
|
||||
public function findByNazev($nazev)
|
||||
{
|
||||
$response = [];
|
||||
|
||||
if ($nazev) {
|
||||
$nazev = trim($nazev);
|
||||
$url = self::URL_SERVER . '?nazev=' . urlencode($nazev);
|
||||
$response = file_get_contents($url);
|
||||
$response = self::extractSubjects($response);
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vyhlada zoznam subjektov podla presneho ICO, ciastkove ICO nie je povolene
|
||||
* @param string $ico 8-miestne cislo, e.g. 12345678
|
||||
*/
|
||||
public function getDetailByICO($ico)
|
||||
{
|
||||
$response = [];
|
||||
$ico = preg_replace('/[^\d]/', '', $ico);
|
||||
|
||||
if (preg_match('/^\d{8}$/', $ico)) {
|
||||
$url = self::URL_SERVER . '?ico=' . $ico;
|
||||
$response = file_get_contents($url);
|
||||
|
||||
if ($response) {
|
||||
$response = self::extractSubjects($response);
|
||||
|
||||
if (! empty($response[0])) {
|
||||
$response = $response[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return matched formatted for autocomplete dropdown list
|
||||
* @param string $term Searched matching string
|
||||
* @param int how many items to return, 1 - 50 (justice vrati max. 50 zaznamov)
|
||||
*/
|
||||
public function findForAutocomplete($term, $size = 15)
|
||||
{
|
||||
$out = [];
|
||||
$size = intval($size);
|
||||
|
||||
if ($term && $size > 0 && mb_strlen($term, 'utf-8') >= 3) {
|
||||
// Justice vrati vysledok pre min. 3 znaky
|
||||
if (preg_match('/^\d{8}$/', $term)) {
|
||||
$subjects = $this->findByIco($term);
|
||||
} else {
|
||||
$subjects = $this->findByNazev($term);
|
||||
}
|
||||
}
|
||||
|
||||
if (! empty($subjects) && is_array($subjects)) {
|
||||
$subjects = array_slice($subjects, 0, $size); // return first $size matches
|
||||
|
||||
foreach ($subjects as &$subject) {
|
||||
$subject['shortname'] = $subject['name'];
|
||||
// cut off too long names
|
||||
if (mb_strlen($subject['shortname'], 'utf-8') > $this->labelMaxChars) {
|
||||
$subject['shortname'] = mb_substr($subject['shortname'], 0, $this->labelMaxChars - 3, 'utf-8') . ' ..';
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($subjects as $subject) {
|
||||
if (! empty($subject['ico'])) {
|
||||
$out[] = [
|
||||
'value' => $subject['ico'],
|
||||
'label' => "{$subject['shortname']} (IČO: {$subject['ico']})",
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vrati zoznam najdenych subjektov s udajmi
|
||||
* @param string $html HTML response zo servera justice.cz
|
||||
* @return [name, ico, city, addr_streetnr, addr_city, addr_zip, ..]
|
||||
*/
|
||||
protected static function extractSubjects($html)
|
||||
{
|
||||
// ensure valid XHTML markup
|
||||
if (! extension_loaded('tidy')) {
|
||||
throw new \Exception('Missing extension [tidy].');
|
||||
}
|
||||
|
||||
$tidy = new \tidy();
|
||||
$html = $tidy->repairString($html, [
|
||||
'output-xhtml' => true,
|
||||
'show-body-only' => true,
|
||||
], 'utf8');
|
||||
|
||||
// purify whitespaces - vkladaju \n alebo
|
||||
$html = strtr($html, [
|
||||
' ' => ' ',
|
||||
]);
|
||||
$html = preg_replace('/\s+/', ' ', $html);
|
||||
|
||||
// load XHTML into DOM document
|
||||
$xml = new \DOMDocument('1.0', 'utf-8');
|
||||
$xml->loadXML($html);
|
||||
$xpath = new \DOMXPath($xml);
|
||||
$rows = $xpath->query('//table[@class="result-details"]/tbody');
|
||||
|
||||
$out = [];
|
||||
|
||||
if ($rows->length) {
|
||||
foreach ($rows as $row) {
|
||||
// Nazev
|
||||
$nodeList = $xpath->query('./tr[1]/td[1]', $row);
|
||||
|
||||
if (! $nodeList->length) {
|
||||
continue; // nazev je povinny
|
||||
}
|
||||
$name = $nodeList->item(0)->nodeValue;
|
||||
$name = preg_replace('/\s+/', ' ', $name); // viacnasobne inside spaces
|
||||
|
||||
// ICO
|
||||
$nodeList = $xpath->query('./tr[1]/td[2]', $row);
|
||||
$ico = $nodeList->length ? $nodeList->item(0)->nodeValue : '';
|
||||
|
||||
// adresa - neda sa spolahnut na poradie prvkov :-(
|
||||
$city = '';
|
||||
$nodeList = $xpath->query('./tr[3]/td[1]', $row);
|
||||
|
||||
if ($nodeList->length) {
|
||||
$addr = trim($nodeList->item(0)->nodeValue);
|
||||
|
||||
if (preg_match('/,\s*(\d{3} ?\d{2})\s+(.+)$/', $addr, $match)) {
|
||||
// Příborská 597, Místek, 738 01 Frýdek-Místek - nazov obce za PSC, prva je ulice a cislo
|
||||
$city = $addr_city = $match[2];
|
||||
list($addr_streetnr) = explode(',', $addr);
|
||||
$addr_zip = $match[1];
|
||||
} elseif (preg_match('/,\s*PSČ\s+(\d{3} ?\d{2})$/', $addr, $match)) {
|
||||
// Řevnice, ČSLA 118, okres Praha-západ, PSČ 25230 - PSC na konci, obec je prva, ulice a cislo druha
|
||||
list($city, $addr_streetnr) = explode(',', $addr);
|
||||
$addr_city = $city;
|
||||
$addr_zip = $match[1];
|
||||
} elseif (! preg_match('/\d{3} ?\d{2}/', $addr, $match)) {
|
||||
// Ústí nad Labem, Masarykova 74 - bez PSC - obec, ulice a cislo
|
||||
$addr_streetnr = $addr_zip = '';
|
||||
|
||||
if (false !== strpos($addr, ',')) {
|
||||
list($city, $addr_streetnr) = explode(',', $addr);
|
||||
} else {
|
||||
list($city) = explode(',', $addr);
|
||||
}
|
||||
$addr_city = $city;
|
||||
}
|
||||
|
||||
// "Praha 10 - Dolní Měcholupy" -> Praha 10, pozn: Frydek-Mistek nema medzeru okolo pomlcky
|
||||
// whoops, avsak ani Ostrana-Hontice a dalsie .. :-( Pre city potrebujeme kratky nazov do 10-15 pismen
|
||||
list($city) = explode('-', $city);
|
||||
// Praha 5 -> Praha
|
||||
$city = preg_replace('/\d/', '', $city);
|
||||
// viacnasobne spaces
|
||||
$city = preg_replace('/\s+/', ' ', $city);
|
||||
}
|
||||
|
||||
$out[] = [
|
||||
'name' => self::trimQuotes($name),
|
||||
'ico' => preg_replace('/[^\d]/', '', $ico),
|
||||
'city' => self::trimQuotes($city),
|
||||
// pre polia s adresou konzistentne so smartform naseptavacem
|
||||
'addr_city' => self::trimQuotes($addr_city),
|
||||
'addr_zip' => preg_replace('/[^\d]/', '', $addr_zip),
|
||||
'addr_streetnr' => self::trimQuotes($addr_streetnr),
|
||||
// len pre kontrolu - plna povodna adresa
|
||||
'addr_full' => self::trimQuotes($addr),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vyhodi quotes z textu, aby neposkodilo HTML atributy
|
||||
* @param string $s
|
||||
*/
|
||||
protected static function trimQuotes($s)
|
||||
{
|
||||
return trim(strtr($s, ['"' => '', "'" => '']));
|
||||
}
|
||||
}
|
||||
21
app/Services/Oasis/OasisDevService.php
Normal file
21
app/Services/Oasis/OasisDevService.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
namespace App\Services\Oasis;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Models\Oasis\Invoice;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Contracts\View\Factory;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
|
||||
class OasisDevService
|
||||
{
|
||||
/**
|
||||
* @return Application|Factory|View
|
||||
*/
|
||||
public function get_invoice_view()
|
||||
{
|
||||
return view('oasis.invoices.invoice')
|
||||
->with('invoice', Invoice::first())
|
||||
->with('user', User::whereEmail('howdy@hi5ve.digital')->first());
|
||||
}
|
||||
}
|
||||
36
app/Services/Oasis/OasisService.php
Normal file
36
app/Services/Oasis/OasisService.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
namespace App\Services\Oasis;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use App\Services\StripeService;
|
||||
use App\Models\Oasis\SubscriptionRequest;
|
||||
use App\Notifications\Oasis\ReminderForPaymentRequiredNotification;
|
||||
|
||||
class OasisService
|
||||
{
|
||||
/**
|
||||
* Get requested subscription requests and remind via
|
||||
* email to activate order
|
||||
*/
|
||||
public function order_reminder()
|
||||
{
|
||||
SubscriptionRequest::whereStatus('requested')
|
||||
->get()
|
||||
->each(function ($request) {
|
||||
// Get diffInHours
|
||||
$diff = Carbon::parse($request->created_at)
|
||||
->diffInHours(Carbon::now());
|
||||
|
||||
// Send order reminder
|
||||
if ($diff == 8) {
|
||||
$plan = resolve(StripeService::class)
|
||||
->getPlan($request->requested_plan);
|
||||
|
||||
$request->user->notify(new ReminderForPaymentRequiredNotification(
|
||||
$request,
|
||||
$plan
|
||||
));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -56,12 +56,12 @@ class SetupService
|
||||
public function seed_default_language()
|
||||
{
|
||||
Language::create([
|
||||
'name' => 'English',
|
||||
'name' => 'English',
|
||||
'locale' => 'en',
|
||||
]);
|
||||
|
||||
Setting::create([
|
||||
'name' => 'language',
|
||||
'name' => 'language',
|
||||
'value' => 'en',
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -69,10 +69,10 @@ class StripeService
|
||||
$tax = $amount * ($rate['percentage'] / 100);
|
||||
|
||||
array_push($rates_public, [
|
||||
'id' => $rate['id'],
|
||||
'active' => $rate['active'],
|
||||
'country' => $rate['country'],
|
||||
'percentage' => $rate['percentage'],
|
||||
'id' => $rate['id'],
|
||||
'active' => $rate['active'],
|
||||
'country' => $rate['country'],
|
||||
'percentage' => $rate['percentage'],
|
||||
'plan_price_formatted' => Cashier::formatAmount(round($amount + $tax)),
|
||||
]);
|
||||
}
|
||||
@@ -174,14 +174,14 @@ class StripeService
|
||||
public function updateCustomerDetails($user)
|
||||
{
|
||||
$user->updateStripeCustomer([
|
||||
'name' => $user->settings->name,
|
||||
'phone' => $user->settings->phone_number,
|
||||
'name' => $user->settings->name,
|
||||
'phone' => $user->settings->phone_number,
|
||||
'address' => [
|
||||
'line1' => $user->settings->address,
|
||||
'city' => $user->settings->city,
|
||||
'country' => $user->settings->country,
|
||||
'line1' => $user->settings->address,
|
||||
'city' => $user->settings->city,
|
||||
'country' => $user->settings->country,
|
||||
'postal_code' => $user->settings->postal_code,
|
||||
'state' => $user->settings->state,
|
||||
'state' => $user->settings->state,
|
||||
],
|
||||
'preferred_locales' => [
|
||||
$user->settings->country, 'en',
|
||||
@@ -211,7 +211,7 @@ class StripeService
|
||||
// Push data to $plan container
|
||||
if ($product['active'] && isset($product['metadata']['capacity'])) {
|
||||
array_push($plans, [
|
||||
'plan' => $plan,
|
||||
'plan' => $plan,
|
||||
'product' => $product,
|
||||
]);
|
||||
}
|
||||
@@ -243,7 +243,7 @@ class StripeService
|
||||
// Push data to $plan container
|
||||
if ($product['active'] && isset($product['metadata']['capacity'])) {
|
||||
array_push($plans, [
|
||||
'plan' => $plan,
|
||||
'plan' => $plan,
|
||||
'product' => $product,
|
||||
]);
|
||||
}
|
||||
@@ -270,7 +270,7 @@ class StripeService
|
||||
$product = $this->stripe->products()->find($plan['product']);
|
||||
|
||||
return [
|
||||
'plan' => $plan,
|
||||
'plan' => $plan,
|
||||
'product' => $product,
|
||||
];
|
||||
});
|
||||
@@ -286,34 +286,34 @@ class StripeService
|
||||
{
|
||||
if ($data instanceof Request) {
|
||||
$plan = [
|
||||
'name' => $data->input('attributes.name'),
|
||||
'name' => $data->input('attributes.name'),
|
||||
'description' => $data->input('attributes.description'),
|
||||
'price' => $data->input('attributes.price'),
|
||||
'capacity' => $data->input('attributes.capacity'),
|
||||
'price' => $data->input('attributes.price'),
|
||||
'capacity' => $data->input('attributes.capacity'),
|
||||
];
|
||||
} else {
|
||||
$plan = [
|
||||
'name' => $data['attributes']['name'],
|
||||
'name' => $data['attributes']['name'],
|
||||
'description' => $data['attributes']['description'],
|
||||
'price' => $data['attributes']['price'],
|
||||
'capacity' => $data['attributes']['capacity'],
|
||||
'price' => $data['attributes']['price'],
|
||||
'capacity' => $data['attributes']['capacity'],
|
||||
];
|
||||
}
|
||||
|
||||
$product = $this->stripe->products()->create([
|
||||
'name' => $plan['name'],
|
||||
'name' => $plan['name'],
|
||||
'description' => $plan['description'],
|
||||
'metadata' => [
|
||||
'metadata' => [
|
||||
'capacity' => $plan['capacity'],
|
||||
],
|
||||
]);
|
||||
|
||||
$plan = $this->stripe->plans()->create([
|
||||
'id' => Str::slug($plan['name']),
|
||||
'amount' => $plan['price'],
|
||||
'id' => Str::slug($plan['name']),
|
||||
'amount' => $plan['price'],
|
||||
'currency' => config('cashier.currency'),
|
||||
'interval' => 'month',
|
||||
'product' => $product['id'],
|
||||
'product' => $product['id'],
|
||||
]);
|
||||
|
||||
return compact('plan', 'product');
|
||||
|
||||
12
app/Traits/Oasis.php
Normal file
12
app/Traits/Oasis.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace App\Traits;
|
||||
|
||||
use App\Models\Oasis\SubscriptionRequest;
|
||||
|
||||
trait Oasis
|
||||
{
|
||||
public function subscriptionRequest()
|
||||
{
|
||||
return $this->hasOne(SubscriptionRequest::class);
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"laravel/cashier": "^12.9.1",
|
||||
"laravel/fortify": "^1.7.7",
|
||||
"laravel/framework": "^8.30.1",
|
||||
"laravel/sanctum": "^2.9",
|
||||
"laravel/sanctum": "^2.11.0",
|
||||
"laravel/tinker": "^2.6.1",
|
||||
"laravel/ui": "^3.2.0",
|
||||
"league/flysystem-aws-s3-v3": "^1.0.29",
|
||||
@@ -32,7 +32,8 @@
|
||||
"spatie/laravel-backup": "^6.15",
|
||||
"spatie/laravel-tail": "^4.3",
|
||||
"teamtnt/laravel-scout-tntsearch-driver": "^11.1.0",
|
||||
"vimeo/psalm": "^4.7"
|
||||
"vimeo/psalm": "^4.7",
|
||||
"makingcg/vuefilemanager-invoicing": "dev-master"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-json": "*",
|
||||
@@ -44,6 +45,12 @@
|
||||
"nunomaduro/collision": "^5.3.0",
|
||||
"phpunit/phpunit": "^9.5.2"
|
||||
},
|
||||
"repositories": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/MakingCG/vuefilemanager-invoicing"
|
||||
}
|
||||
],
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
"preferred-install": "dist",
|
||||
|
||||
654
composer.lock
generated
654
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -191,44 +191,44 @@ return [
|
||||
*/
|
||||
|
||||
'aliases' => [
|
||||
'App' => Illuminate\Support\Facades\App::class,
|
||||
'Arr' => Illuminate\Support\Arr::class,
|
||||
'Artisan' => Illuminate\Support\Facades\Artisan::class,
|
||||
'Auth' => Illuminate\Support\Facades\Auth::class,
|
||||
'Blade' => Illuminate\Support\Facades\Blade::class,
|
||||
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
|
||||
'Bus' => Illuminate\Support\Facades\Bus::class,
|
||||
'Cache' => Illuminate\Support\Facades\Cache::class,
|
||||
'Config' => Illuminate\Support\Facades\Config::class,
|
||||
'Cookie' => Illuminate\Support\Facades\Cookie::class,
|
||||
'Crypt' => Illuminate\Support\Facades\Crypt::class,
|
||||
'DB' => Illuminate\Support\Facades\DB::class,
|
||||
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
|
||||
'Event' => Illuminate\Support\Facades\Event::class,
|
||||
'File' => Illuminate\Support\Facades\File::class,
|
||||
'Gate' => Illuminate\Support\Facades\Gate::class,
|
||||
'Hash' => Illuminate\Support\Facades\Hash::class,
|
||||
'Lang' => Illuminate\Support\Facades\Lang::class,
|
||||
'Log' => Illuminate\Support\Facades\Log::class,
|
||||
'Mail' => Illuminate\Support\Facades\Mail::class,
|
||||
'App' => Illuminate\Support\Facades\App::class,
|
||||
'Arr' => Illuminate\Support\Arr::class,
|
||||
'Artisan' => Illuminate\Support\Facades\Artisan::class,
|
||||
'Auth' => Illuminate\Support\Facades\Auth::class,
|
||||
'Blade' => Illuminate\Support\Facades\Blade::class,
|
||||
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
|
||||
'Bus' => Illuminate\Support\Facades\Bus::class,
|
||||
'Cache' => Illuminate\Support\Facades\Cache::class,
|
||||
'Config' => Illuminate\Support\Facades\Config::class,
|
||||
'Cookie' => Illuminate\Support\Facades\Cookie::class,
|
||||
'Crypt' => Illuminate\Support\Facades\Crypt::class,
|
||||
'DB' => Illuminate\Support\Facades\DB::class,
|
||||
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
|
||||
'Event' => Illuminate\Support\Facades\Event::class,
|
||||
'File' => Illuminate\Support\Facades\File::class,
|
||||
'Gate' => Illuminate\Support\Facades\Gate::class,
|
||||
'Hash' => Illuminate\Support\Facades\Hash::class,
|
||||
'Lang' => Illuminate\Support\Facades\Lang::class,
|
||||
'Log' => Illuminate\Support\Facades\Log::class,
|
||||
'Mail' => Illuminate\Support\Facades\Mail::class,
|
||||
'Notification' => Illuminate\Support\Facades\Notification::class,
|
||||
'Password' => Illuminate\Support\Facades\Password::class,
|
||||
'Queue' => Illuminate\Support\Facades\Queue::class,
|
||||
'Redirect' => Illuminate\Support\Facades\Redirect::class,
|
||||
'Redis' => Illuminate\Support\Facades\Redis::class,
|
||||
'Request' => Illuminate\Support\Facades\Request::class,
|
||||
'Response' => Illuminate\Support\Facades\Response::class,
|
||||
'Route' => Illuminate\Support\Facades\Route::class,
|
||||
'Schema' => Illuminate\Support\Facades\Schema::class,
|
||||
'Session' => Illuminate\Support\Facades\Session::class,
|
||||
'Storage' => Illuminate\Support\Facades\Storage::class,
|
||||
'Str' => Illuminate\Support\Str::class,
|
||||
'URL' => Illuminate\Support\Facades\URL::class,
|
||||
'Validator' => Illuminate\Support\Facades\Validator::class,
|
||||
'View' => Illuminate\Support\Facades\View::class,
|
||||
'Image' => Intervention\Image\Facades\Image::class,
|
||||
'Stripe' => Cartalyst\Stripe\Laravel\Facades\Stripe::class,
|
||||
'Crawler' => Jaybizzle\LaravelCrawlerDetect\Facades\LaravelCrawlerDetect::class,
|
||||
'Password' => Illuminate\Support\Facades\Password::class,
|
||||
'Queue' => Illuminate\Support\Facades\Queue::class,
|
||||
'Redirect' => Illuminate\Support\Facades\Redirect::class,
|
||||
'Redis' => Illuminate\Support\Facades\Redis::class,
|
||||
'Request' => Illuminate\Support\Facades\Request::class,
|
||||
'Response' => Illuminate\Support\Facades\Response::class,
|
||||
'Route' => Illuminate\Support\Facades\Route::class,
|
||||
'Schema' => Illuminate\Support\Facades\Schema::class,
|
||||
'Session' => Illuminate\Support\Facades\Session::class,
|
||||
'Storage' => Illuminate\Support\Facades\Storage::class,
|
||||
'Str' => Illuminate\Support\Str::class,
|
||||
'URL' => Illuminate\Support\Facades\URL::class,
|
||||
'Validator' => Illuminate\Support\Facades\Validator::class,
|
||||
'View' => Illuminate\Support\Facades\View::class,
|
||||
'Image' => Intervention\Image\Facades\Image::class,
|
||||
'Stripe' => Cartalyst\Stripe\Laravel\Facades\Stripe::class,
|
||||
'Crawler' => Jaybizzle\LaravelCrawlerDetect\Facades\LaravelCrawlerDetect::class,
|
||||
//'Madzipper' => Madnest\Madzipper\Madzipper::class,
|
||||
],
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ return [
|
||||
*/
|
||||
|
||||
'defaults' => [
|
||||
'guard' => 'web',
|
||||
'guard' => 'web',
|
||||
'passwords' => 'users',
|
||||
],
|
||||
|
||||
@@ -36,14 +36,14 @@ return [
|
||||
|
||||
'guards' => [
|
||||
'web' => [
|
||||
'driver' => 'session',
|
||||
'driver' => 'session',
|
||||
'provider' => 'users',
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'driver' => 'token',
|
||||
'driver' => 'token',
|
||||
'provider' => 'users',
|
||||
'hash' => false,
|
||||
'hash' => false,
|
||||
],
|
||||
],
|
||||
|
||||
@@ -67,7 +67,7 @@ return [
|
||||
'providers' => [
|
||||
'users' => [
|
||||
'driver' => 'eloquent',
|
||||
'model' => App\Models\User::class,
|
||||
'model' => App\Models\User::class,
|
||||
],
|
||||
|
||||
// 'users' => [
|
||||
@@ -94,8 +94,8 @@ return [
|
||||
'passwords' => [
|
||||
'users' => [
|
||||
'provider' => 'users',
|
||||
'table' => 'password_resets',
|
||||
'expire' => 60,
|
||||
'table' => 'password_resets',
|
||||
'expire' => 60,
|
||||
'throttle' => 60,
|
||||
],
|
||||
],
|
||||
|
||||
@@ -145,12 +145,12 @@ return [
|
||||
*/
|
||||
'notifications' => [
|
||||
'notifications' => [
|
||||
\Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => ['mail'],
|
||||
\Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => ['mail'],
|
||||
\Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFound::class => ['mail'],
|
||||
\Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => ['mail'],
|
||||
\Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => ['mail'],
|
||||
\Spatie\Backup\Notifications\Notifications\HealthyBackupWasFound::class => ['mail'],
|
||||
\Spatie\Backup\Notifications\Notifications\CleanupWasSuccessful::class => ['mail'],
|
||||
\Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => ['mail'],
|
||||
\Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => ['mail'],
|
||||
\Spatie\Backup\Notifications\Notifications\HealthyBackupWasFound::class => ['mail'],
|
||||
\Spatie\Backup\Notifications\Notifications\CleanupWasSuccessful::class => ['mail'],
|
||||
],
|
||||
|
||||
/*
|
||||
@@ -189,10 +189,10 @@ return [
|
||||
*/
|
||||
'monitor_backups' => [
|
||||
[
|
||||
'name' => env('APP_NAME', 'laravel-backup'),
|
||||
'disks' => ['local'],
|
||||
'name' => env('APP_NAME', 'laravel-backup'),
|
||||
'disks' => ['local'],
|
||||
'health_checks' => [
|
||||
\Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1,
|
||||
\Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumAgeInDays::class => 1,
|
||||
\Spatie\Backup\Tasks\Monitor\HealthChecks\MaximumStorageInMegabytes::class => 5000,
|
||||
],
|
||||
],
|
||||
|
||||
@@ -29,18 +29,18 @@ return [
|
||||
|
||||
'connections' => [
|
||||
'pusher' => [
|
||||
'driver' => 'pusher',
|
||||
'key' => env('PUSHER_APP_KEY'),
|
||||
'secret' => env('PUSHER_APP_SECRET'),
|
||||
'app_id' => env('PUSHER_APP_ID'),
|
||||
'driver' => 'pusher',
|
||||
'key' => env('PUSHER_APP_KEY'),
|
||||
'secret' => env('PUSHER_APP_SECRET'),
|
||||
'app_id' => env('PUSHER_APP_ID'),
|
||||
'options' => [
|
||||
'cluster' => env('PUSHER_APP_CLUSTER'),
|
||||
'useTLS' => true,
|
||||
'useTLS' => true,
|
||||
],
|
||||
],
|
||||
|
||||
'redis' => [
|
||||
'driver' => 'redis',
|
||||
'driver' => 'redis',
|
||||
'connection' => 'default',
|
||||
],
|
||||
|
||||
|
||||
@@ -40,20 +40,20 @@ return [
|
||||
],
|
||||
|
||||
'database' => [
|
||||
'driver' => 'database',
|
||||
'table' => 'cache',
|
||||
'driver' => 'database',
|
||||
'table' => 'cache',
|
||||
'connection' => null,
|
||||
],
|
||||
|
||||
'file' => [
|
||||
'driver' => 'file',
|
||||
'path' => storage_path('framework/cache/data'),
|
||||
'path' => storage_path('framework/cache/data'),
|
||||
],
|
||||
|
||||
'memcached' => [
|
||||
'driver' => 'memcached',
|
||||
'driver' => 'memcached',
|
||||
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
|
||||
'sasl' => [
|
||||
'sasl' => [
|
||||
env('MEMCACHED_USERNAME'),
|
||||
env('MEMCACHED_PASSWORD'),
|
||||
],
|
||||
@@ -62,24 +62,24 @@ return [
|
||||
],
|
||||
'servers' => [
|
||||
[
|
||||
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
|
||||
'port' => env('MEMCACHED_PORT', 11211),
|
||||
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
|
||||
'port' => env('MEMCACHED_PORT', 11211),
|
||||
'weight' => 100,
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'redis' => [
|
||||
'driver' => 'redis',
|
||||
'driver' => 'redis',
|
||||
'connection' => 'cache',
|
||||
],
|
||||
|
||||
'dynamodb' => [
|
||||
'driver' => 'dynamodb',
|
||||
'key' => env('AWS_ACCESS_KEY_ID'),
|
||||
'secret' => env('AWS_SECRET_ACCESS_KEY'),
|
||||
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
|
||||
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
|
||||
'driver' => 'dynamodb',
|
||||
'key' => env('AWS_ACCESS_KEY_ID'),
|
||||
'secret' => env('AWS_SECRET_ACCESS_KEY'),
|
||||
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
|
||||
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
|
||||
'endpoint' => env('DYNAMODB_ENDPOINT'),
|
||||
],
|
||||
],
|
||||
|
||||
@@ -41,7 +41,7 @@ return [
|
||||
*/
|
||||
|
||||
'webhook' => [
|
||||
'secret' => env('STRIPE_WEBHOOK_SECRET'),
|
||||
'secret' => env('STRIPE_WEBHOOK_SECRET'),
|
||||
'tolerance' => env('STRIPE_WEBHOOK_TOLERANCE', 300),
|
||||
],
|
||||
|
||||
|
||||
@@ -4,177 +4,177 @@ return [
|
||||
'pages' => [
|
||||
[
|
||||
'visibility' => 1,
|
||||
'title' => 'Terms of Service',
|
||||
'slug' => 'terms-of-service',
|
||||
'content' => 'Laoreet cum hendrerit iaculis arcu phasellus congue et elementum, pharetra risus imperdiet aptent posuere rutrum parturient blandit, dapibus tellus ridiculus potenti aliquam sociis turpis. Nullam commodo eget laoreet risus cursus vel placerat, in dapibus sociis gravida faucibus sodales, fringilla potenti elit semper iaculis ullamcorper. Dignissim vulputate pretium montes pellentesque mollis, consectetur adipiscing curabitur semper sem rhoncus, litora viverra curae proin.',
|
||||
'title' => 'Terms of Service',
|
||||
'slug' => 'terms-of-service',
|
||||
'content' => 'Laoreet cum hendrerit iaculis arcu phasellus congue et elementum, pharetra risus imperdiet aptent posuere rutrum parturient blandit, dapibus tellus ridiculus potenti aliquam sociis turpis. Nullam commodo eget laoreet risus cursus vel placerat, in dapibus sociis gravida faucibus sodales, fringilla potenti elit semper iaculis ullamcorper. Dignissim vulputate pretium montes pellentesque mollis, consectetur adipiscing curabitur semper sem rhoncus, litora viverra curae proin.',
|
||||
],
|
||||
[
|
||||
'visibility' => 1,
|
||||
'title' => 'Privacy Policy',
|
||||
'slug' => 'privacy-policy',
|
||||
'content' => 'Sit orci justo augue maecenas laoreet consectetur natoque magnis in viverra sagittis, himenaeos urna facilisis mus proin primis diam accumsan tristique inceptos. Primis quisque posuere sit praesent lobortis feugiat semper convallis facilisis, vivamus gravida ligula nostra curae eu donec duis parturient senectus, arcu dolor viverra penatibus natoque cum nisi commodo. Litora sociis mauris justo nullam suspendisse mattis maecenas nascetur congue phasellus cras ultricies posuere donec, dapibus egestas diam lacus ornare montes senectus tincidunt eu taciti sed consequat.',
|
||||
'title' => 'Privacy Policy',
|
||||
'slug' => 'privacy-policy',
|
||||
'content' => 'Sit orci justo augue maecenas laoreet consectetur natoque magnis in viverra sagittis, himenaeos urna facilisis mus proin primis diam accumsan tristique inceptos. Primis quisque posuere sit praesent lobortis feugiat semper convallis facilisis, vivamus gravida ligula nostra curae eu donec duis parturient senectus, arcu dolor viverra penatibus natoque cum nisi commodo. Litora sociis mauris justo nullam suspendisse mattis maecenas nascetur congue phasellus cras ultricies posuere donec, dapibus egestas diam lacus ornare montes senectus tincidunt eu taciti sed consequat.',
|
||||
],
|
||||
[
|
||||
'visibility' => 1,
|
||||
'title' => 'Cookie Policy',
|
||||
'slug' => 'cookie-policy',
|
||||
'content' => 'Metus penatibus ligula dolor natoque non habitasse laoreet facilisis, libero vivamus eget semper vulputate interdum integer, phasellus lorem enim blandit consectetur nullam sollicitudin. Hendrerit interdum luctus ut in molestie himenaeos eros cum laoreet parturient est, eu lectus hac et netus viverra dictumst congue elit sem senectus litora, fames scelerisque adipiscing inceptos fringilla montes sociosqu suscipit auctor potenti. Elementum lacus vulputate viverra ac morbi ligula ipsum facilisi, sit eu imperdiet lacinia congue dis vitae.',
|
||||
'title' => 'Cookie Policy',
|
||||
'slug' => 'cookie-policy',
|
||||
'content' => 'Metus penatibus ligula dolor natoque non habitasse laoreet facilisis, libero vivamus eget semper vulputate interdum integer, phasellus lorem enim blandit consectetur nullam sollicitudin. Hendrerit interdum luctus ut in molestie himenaeos eros cum laoreet parturient est, eu lectus hac et netus viverra dictumst congue elit sem senectus litora, fames scelerisque adipiscing inceptos fringilla montes sociosqu suscipit auctor potenti. Elementum lacus vulputate viverra ac morbi ligula ipsum facilisi, sit eu imperdiet lacinia congue dis vitae.',
|
||||
],
|
||||
],
|
||||
'content' => [
|
||||
'regular' => [
|
||||
[
|
||||
'name' => 'section_features',
|
||||
'name' => 'section_features',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'section_feature_boxes',
|
||||
'name' => 'section_feature_boxes',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'section_get_started',
|
||||
'name' => 'section_get_started',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'header_title',
|
||||
'name' => 'header_title',
|
||||
'value' => 'Simple <span class="text-theme">&</span> Powerful Personal Cloud Storage',
|
||||
],
|
||||
[
|
||||
'name' => 'header_description',
|
||||
'name' => 'header_description',
|
||||
'value' => 'Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Truly freedom.',
|
||||
],
|
||||
[
|
||||
'name' => 'features_title',
|
||||
'name' => 'features_title',
|
||||
'value' => 'The Fastest Growing <span class="text-theme">File Manager</span> on the CodeCanyon Market',
|
||||
],
|
||||
[
|
||||
'name' => 'features_description',
|
||||
'name' => 'features_description',
|
||||
'value' => 'Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Truly freedom.',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_title_1',
|
||||
'name' => 'feature_title_1',
|
||||
'value' => 'Truly Freedom',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_description_1',
|
||||
'name' => 'feature_description_1',
|
||||
'value' => 'You have full control over VueFileManager, no third authorities will control your service or usage, only you.',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_title_2',
|
||||
'name' => 'feature_title_2',
|
||||
'value' => 'The Sky is the Limit',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_description_2',
|
||||
'name' => 'feature_description_2',
|
||||
'value' => 'VueFileManager is cloud storage software. You have to install and running application on your own server hosting.',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_title_3',
|
||||
'name' => 'feature_title_3',
|
||||
'value' => 'No Monthly Fees',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_description_3',
|
||||
'name' => 'feature_description_3',
|
||||
'value' => 'When you running VueFileManager on your own server hosting, anybody can\'t control your content or resell your user data. Your data is safe.',
|
||||
],
|
||||
[
|
||||
'name' => 'get_started_title',
|
||||
'name' => 'get_started_title',
|
||||
'value' => 'Ready to Get <span class="text-theme">Started</span><br> With Us?',
|
||||
],
|
||||
[
|
||||
'name' => 'get_started_description',
|
||||
'name' => 'get_started_description',
|
||||
'value' => 'Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Truly freedom.',
|
||||
],
|
||||
[
|
||||
'name' => 'footer_content',
|
||||
'name' => 'footer_content',
|
||||
'value' => '© 2021 Simple & Powerful Personal Cloud Storage. Developed by <a href="https://hi5ve.digital" target="_blank">Hi5Ve.Digital</a>',
|
||||
],
|
||||
[
|
||||
'name' => 'allow_homepage',
|
||||
'name' => 'allow_homepage',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'app_color',
|
||||
'name' => 'app_color',
|
||||
'value' => '#00BC7E',
|
||||
],
|
||||
],
|
||||
'extended' => [
|
||||
[
|
||||
'name' => 'section_features',
|
||||
'name' => 'section_features',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'section_feature_boxes',
|
||||
'name' => 'section_feature_boxes',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'section_pricing_content',
|
||||
'name' => 'section_pricing_content',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'section_get_started',
|
||||
'name' => 'section_get_started',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'header_title',
|
||||
'name' => 'header_title',
|
||||
'value' => 'Simple <span class="text-theme">&</span> Powerful Personal Cloud Storage',
|
||||
],
|
||||
[
|
||||
'name' => 'header_description',
|
||||
'name' => 'header_description',
|
||||
'value' => 'Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Truly freedom.',
|
||||
],
|
||||
[
|
||||
'name' => 'features_title',
|
||||
'name' => 'features_title',
|
||||
'value' => 'The Fastest Growing <span class="text-theme">File Manager</span> on the CodeCanyon Market',
|
||||
],
|
||||
[
|
||||
'name' => 'features_description',
|
||||
'name' => 'features_description',
|
||||
'value' => 'Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Truly freedom.',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_title_1',
|
||||
'name' => 'feature_title_1',
|
||||
'value' => 'Truly Freedom',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_description_1',
|
||||
'name' => 'feature_description_1',
|
||||
'value' => 'You have full control over VueFileManager, no third authorities will control your service or usage, only you.',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_title_2',
|
||||
'name' => 'feature_title_2',
|
||||
'value' => 'The Sky is the Limit',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_description_2',
|
||||
'name' => 'feature_description_2',
|
||||
'value' => 'VueFileManager is cloud storage software. You have to install and running application on your own server hosting.',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_title_3',
|
||||
'name' => 'feature_title_3',
|
||||
'value' => 'No Monthly Fees',
|
||||
],
|
||||
[
|
||||
'name' => 'feature_description_3',
|
||||
'name' => 'feature_description_3',
|
||||
'value' => 'When you running VueFileManager on your own server hosting, anybody can\'t control your content or resell your user data. Your data is safe.',
|
||||
],
|
||||
[
|
||||
'name' => 'pricing_title',
|
||||
'name' => 'pricing_title',
|
||||
'value' => 'Pick the <span class="text-theme">Best Plan</span> For Your Needs',
|
||||
],
|
||||
[
|
||||
'name' => 'pricing_description',
|
||||
'name' => 'pricing_description',
|
||||
'value' => 'Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Truly freedom.',
|
||||
],
|
||||
[
|
||||
'name' => 'get_started_title',
|
||||
'name' => 'get_started_title',
|
||||
'value' => 'Ready to Get <span class="text-theme">Started</span><br> With Us?',
|
||||
],
|
||||
[
|
||||
'name' => 'get_started_description',
|
||||
'name' => 'get_started_description',
|
||||
'value' => 'Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Truly freedom.',
|
||||
],
|
||||
[
|
||||
'name' => 'footer_content',
|
||||
'name' => 'footer_content',
|
||||
'value' => '© 2021 Simple & Powerful Personal Cloud Storage. Developed by <a href="https://hi5ve.digital" target="_blank" class="text-theme">Hi5Ve.Digital</a>',
|
||||
],
|
||||
[
|
||||
'name' => 'app_color',
|
||||
'name' => 'app_color',
|
||||
'value' => '#00BC7E',
|
||||
],
|
||||
],
|
||||
|
||||
@@ -8,4 +8,290 @@
|
||||
|
||||
return [
|
||||
'custom' => 'translation',
|
||||
|
||||
// On boarding
|
||||
'successful_payment_with_password_creation' => 'Dakujeme, platba bola uspesne zaznamenana. V poslednom kroku si prosim vytvorte heslo pre Vas ucet.',
|
||||
'pay_order_description' => 'Zaplacenim objednavky se Vas ucet automaticky zaktivuje a vytvori se Vam digitalni prostor pro Vase dulezite dokumenty.',
|
||||
|
||||
'payment_page.payment_gateway' => 'Platebni karta',
|
||||
'payment_page.company' => 'Spolecnost',
|
||||
'payment_page.ico' => 'ICO',
|
||||
'payment_page.address' => 'Adresa',
|
||||
|
||||
// Mail notifications for ordering
|
||||
'mail_greeting' => 'Vážený zákazníku,',
|
||||
'mail_salutation' => 'S pozdravem a přáním hezkého dne, Tým Oasis Drive',
|
||||
'mail_tariff' => 'Vámi vybraný tarif: :name - :storage za :price',
|
||||
'mail_activation_action' => 'Pro aktivaci klikněte zde',
|
||||
|
||||
'mail_order_subject' => '🏝 Potvrzeni Objednavky - OasisDrive',
|
||||
'mail_order_line_1' => 'Právě jste si úspěšně vytvořil registraci bezpečnostní datové služby OasisDrive.',
|
||||
'mail_order_line_2' => 'Odkaz je platný 24 hodin.',
|
||||
'mail_order_line_3' => 'Po dokončení registrace v odkazu Vám bude služba automaticky aktivována a lze ji ihned využívat.',
|
||||
|
||||
'mail_reminder_line_1' => 'Děkujeme za Vaši objednávku služby Oasis Drive pro bezpečné uložení Vašich firemních dokumentů.',
|
||||
'mail_reminder_line_2' => 'Připomínáme dokončení aktivace služby a blížící se konec platnosti registračního odkazu:',
|
||||
'mail_reminder_line_3' => 'Po dokončení registrace v odkazu Vám bude služba automaticky aktivována a lze ji ihned využívat.',
|
||||
|
||||
// Admin
|
||||
'oasis.create_order' => 'Vytvorit objednavku',
|
||||
'oasis.create_user' => 'Vytvorit Uzivatela',
|
||||
|
||||
// Homepage
|
||||
'navigation.price' => 'Ceník',
|
||||
'navigation.about-us' => 'O Nás',
|
||||
'navigation.contact-and-support' => 'Kontakt a Podpora',
|
||||
|
||||
'try_drive' => 'Vyzkouset OasisDrive',
|
||||
'more_info' => 'Více Informací',
|
||||
|
||||
'contact.ico' => 'ICO',
|
||||
'contact.hq' => 'Sídlo',
|
||||
|
||||
'homepage_header_title' => 'Jednoduchý a Bezpečný Cloud vo Vrecku',
|
||||
'homepage_header_description' => 'Virtuální šanon, vždy s tebou.',
|
||||
|
||||
'homepage_feature_title' => 'Proč je OasisDrive Výnimočný?',
|
||||
'homepage_feature_description' => 'Cloudové uložiště je v podstatě virtuální šanon, kam uživatelé ukládají svá data, ke kterým se mohou přihlásit odkudkoli v nezávislosti na zařízení. OasisDrive umožňuje bezpečně chránit Vaše firemní data.',
|
||||
|
||||
'feature_1_title' => 'Bezpecnost na prvnim miste',
|
||||
'feature_1_description' => 'Naše cloudové uložiště umožňuje bezpečně chránit Vaše firemní data. kdy využíváme několik vysoce zabezpečených serverů po Evropské unii a vícenásobným šifrováním souborů (tzv. kryptováním).',
|
||||
|
||||
'feature_2_title' => 'Bezpečnost v rámci GDPR',
|
||||
'feature_2_description' => 'bezpečnost uložení dat v rámci evropské směrnice o GDPR a přidružených zákonů o zpracování a ochraně citlivých údajů. Naši klienti jsou tedy chráněni před zneužitím dat a tím pádem i před pokutami vyplývajícími z legislativy, které být astronomické.',
|
||||
|
||||
'feature_3_title' => 'Jednoduchost pouzivani',
|
||||
'feature_3_description' => 'Naše cloudové uložiště umožňuje bezpečně chránit Vaše firemní data. kdy využíváme několik vysoce zabezpečených serverů po Evropské unii a vícenásobným šifrováním souborů (tzv. kryptováním).',
|
||||
|
||||
'homepage_pricing_title' => 'Kolik stoji OasisDrive?',
|
||||
'homepage_pricing_description' => 'OasisDrive je dostupny v troch variantach. Ak presiahnete limit svojho balicka, mozete si navysit balik dat jednoduchym upgradom uctu.',
|
||||
|
||||
'homepage_about_us_title' => 'Kto Jsme?',
|
||||
'homepage_about_us_description' => 'Jsme česká společnost, která pro fyzické a právnické osoby (živnostníky a firmy) poskytuje cloudové uložiště dle evropské směrnice (GDPR) a následného zákona o zpracování osobních údajů (zákon 110/2019 sb.).',
|
||||
|
||||
'homepage_about_us_line_1' => 'Zakládáme si na kvalitě a nejlepší možné bezpečnosti pro uchovávání a zpracování dat a dokumentů.',
|
||||
'homepage_about_us_line_2' => 'Spolupracujeme rovněž se specialisty v oboru práva a IT.',
|
||||
'homepage_about_us_line_3' => 'Důležitá je pro nás uživatelská jednoduchost, stoprocentní funkčnost a přehlednost.',
|
||||
'homepage_about_us_line_4' => 'Bezpečnost uložení dat tak, jak nařizuje směrnice EU (GDPR) a zákon o zpracování osobních údajů.',
|
||||
|
||||
'homepage_contact_title' => 'Kontakt a Podpora',
|
||||
'homepage_contact_description' => 'V pripade akychkolvek otazok nas nevahajte kontaktovat emailom, alebo na ktoromkolvek telefonnom cisle.',
|
||||
|
||||
'contact_company_title' => 'Společnost',
|
||||
'contact_support_title' => 'Podpora',
|
||||
'contact_sales_title' => 'Prodej',
|
||||
'contact_documents_title' => 'Dokumenty',
|
||||
'contact_leave_message_title' => 'Zanechte nám vzkaz',
|
||||
|
||||
'document_gdpr_policy' => 'Směrnice EU (GDPR)',
|
||||
|
||||
// Invoice module
|
||||
'in.invoice' => 'Invoice',
|
||||
'in_toaster.success_creation' => 'Invoice was created successfully',
|
||||
'in_toaster.success_invoice_edition' => 'The invoice was successfully edited.',
|
||||
'in_toaster.success_client_creation' => 'Client was created successfully',
|
||||
|
||||
'in_editor.page.create_regular_invoice' => 'Create Regular Invoice',
|
||||
'in_editor.page.create_advance_invoice' => 'Create Advance Invoice',
|
||||
|
||||
'in_editor.page.edit_regular_invoice' => 'Edit Regular Invoice',
|
||||
'in_editor.page.edit_advance_invoice' => 'Edit Advance Invoice',
|
||||
|
||||
'in_number' => 'Invoice Number',
|
||||
'in_variable' => 'Variable Number',
|
||||
'in_delivery_at' => 'Delivery At',
|
||||
|
||||
'in_number_desc' => 'Recommendation based on your latest invoice number {number}',
|
||||
'in_variable_desc' => 'Recommendation based on your invoice number',
|
||||
|
||||
'in_editor.properties' => 'Invoice Properties',
|
||||
'in_editor.client' => 'Client',
|
||||
'in_editor.items' => 'Items',
|
||||
'in_editor.discount' => 'Discount',
|
||||
'in_editor.others' => 'Others',
|
||||
'in_editor.summary' => 'Invoice Summary',
|
||||
|
||||
'in_editor.ico' => 'ICO',
|
||||
'in_editor.dic' => 'DIC',
|
||||
'in_editor.ic_dph' => 'IC DPH',
|
||||
'in_editor.company_name' => 'Company name',
|
||||
'in_editor.new_client' => 'Register new client...',
|
||||
'in_editor.client_address' => 'Address',
|
||||
'in_editor.client_city' => 'City',
|
||||
'in_editor.client_postal_code' => 'Postal Code',
|
||||
'in_editor.client_country' => 'Country',
|
||||
'in_editor.client_phone' => 'Phone',
|
||||
'in_editor.client_email' => 'Email',
|
||||
'in_editor.client_logo' => 'Logo',
|
||||
'in_editor.description' => 'Description',
|
||||
'in_editor.amount' => 'Amount',
|
||||
'in_editor.unit' => 'Unit',
|
||||
'in_editor.tax_rate' => 'Tax Rate',
|
||||
'in_editor.price' => 'Price',
|
||||
'in_editor.add_item' => 'Add New Item',
|
||||
'in_editor.apply_discount' => 'Apply discount',
|
||||
'in_editor.discount_help' => 'You can apply percentage or value discount on your invoice.',
|
||||
'in_editor.discount_type_percent' => 'Percentage',
|
||||
'in_editor.discount_type_amount' => 'Amount',
|
||||
'in_editor.discount_type' => 'Discount Type',
|
||||
'in_editor.discount_rate' => 'Discount Rate',
|
||||
'in_editor.store_client' => 'Store client for future use',
|
||||
'in_editor.store_client_notes' => 'Client will be stored to your list and will be ready to reuse again when you create new invoice.',
|
||||
'in_editor.send' => "Send invoice on client's email",
|
||||
'in_editor.send_notes' => 'Invoice will be sent to client immediately after invoice generate.',
|
||||
'in_editor.default_unit' => 'Pcs.',
|
||||
|
||||
'in_editor.plac.invoice_number' => 'Type invoice number...',
|
||||
'in_editor.plac.variable_number' => 'Type variable number...',
|
||||
'in_editor.plac.select_client' => 'Create new or select existing client...',
|
||||
'in_editor.plac.client_ico' => 'Type client ICO...',
|
||||
'in_editor.plac.client_dic' => 'Type client DIC...',
|
||||
'in_editor.plac.client_ic_dph' => 'Type client IC DHP...',
|
||||
'in_editor.plac.client_company' => 'Type client company name...',
|
||||
'in_editor.plac.client_address' => 'Type client address...',
|
||||
'in_editor.plac.client_city' => 'Type client city...',
|
||||
'in_editor.plac.client_postal_code' => 'Type client postal code...',
|
||||
'in_editor.plac.client_country' => 'Select client country',
|
||||
'in_editor.plac.client_phone' => "Type client's phone number...",
|
||||
'in_editor.plac.client_email' => "Type client's email address...",
|
||||
'in_editor.plac.item_desc' => 'Type item description...',
|
||||
'in_editor.plac.item_amount' => 'The amount in Pcs.',
|
||||
'in_editor.plac.item_unit' => 'The unit',
|
||||
'in_editor.plac.item_tax_rate' => 'Type item tax rate in %...',
|
||||
'in_editor.plac.item_price' => 'Type the item price...',
|
||||
'in_editor.plac.discount_type' => 'Select discount type',
|
||||
'in_editor.plac.discount_rate' => 'Type discount rate...',
|
||||
|
||||
'in_editor.summary.vat_base' => 'VAT Base',
|
||||
'in_editor.summary.vat' => 'VAT',
|
||||
'in_editor.summary.total' => 'Total',
|
||||
|
||||
'in_editor.submit' => 'Store & Generate Invoice',
|
||||
'in_editor.error' => 'There is probably an error, please check it and fix it.',
|
||||
|
||||
'inputs.placeholder_search_invoices' => 'Search in invoices...',
|
||||
'inputs.placeholder_search_clients' => 'Search in clients...',
|
||||
|
||||
'in.nav.group.invoicing' => 'Invoicing',
|
||||
'in.nav.group.settings' => 'Settings',
|
||||
|
||||
'in.nav.invoices' => 'Invoices',
|
||||
'in.nav.advance_invoices' => 'Advance Invoices',
|
||||
'in.nav.clients' => 'Clients',
|
||||
'in.nav.my_bill_profile' => 'My Billing Profile',
|
||||
|
||||
'in.create.regular_invoice' => 'Create Invoice',
|
||||
'in.create.advance_invoice' => 'Create Advance Invoice',
|
||||
'in.create.client' => 'Create Client',
|
||||
|
||||
'in.button.setup_bill_profile' => 'Set up Billing Profile',
|
||||
'in.button.store_bill_profile' => 'Store My Billing Profile',
|
||||
|
||||
'in.toaster.success_bill_profile' => 'Your billing profile was successfully stored',
|
||||
|
||||
'in.bill_profile_note' => 'Here you can set your <b class="text-theme">billing profile</b> which will be paste to your every newly generated invoice.',
|
||||
|
||||
'in.empty.bill_profile_title' => "You don't have billing profile",
|
||||
'in.empty.bill_profile_description' => 'Before your first invoice, please set up your billing profile.',
|
||||
'in.empty.clients_invoices' => "Client doesn't have any invoices yet.",
|
||||
|
||||
'in.empty.invoice_page_title' => 'Create Your First Invoice',
|
||||
'in.empty.invoice_page_description' => "It's very easy, just click on the button below.",
|
||||
|
||||
'in.empty.client_page_title' => 'Create Your First Client',
|
||||
|
||||
'in.form.some_issues' => 'We found some issues in your form. Please check it out and submit again',
|
||||
'in.form.create_client' => 'Create Client',
|
||||
'in.form.delete_invoice' => 'Delete Invoice',
|
||||
|
||||
'in.form.stamp' => 'Stamp',
|
||||
'in.form.author_name' => 'Author Name',
|
||||
'in.form.swift_code' => 'BIC code/SWIFT',
|
||||
'in.form.iban' => 'IBAN',
|
||||
'in.form.bank_name' => 'Bank Name',
|
||||
'in.form.reg_notes' => 'Registration Notes',
|
||||
'in.form.company_name' => 'Company name',
|
||||
'in.form.company_and_logo' => 'Company & Logo',
|
||||
'in.form.company_details' => 'Company Details',
|
||||
'in.form.company_address' => 'Company Address',
|
||||
'in.form.contact_info' => 'Contact Information',
|
||||
'in.form.bank_info' => 'Bank Info',
|
||||
'in.form.author' => 'Author',
|
||||
|
||||
'in.menu.edit_invoice' => 'Edit Invoice',
|
||||
'in.menu.send_invoice' => 'Send Invoice',
|
||||
'in.menu.show_company' => 'Show Company',
|
||||
'in.menu.edit' => 'Edit',
|
||||
'in.menu.delete' => 'Delete',
|
||||
|
||||
'in.popup.delete_single_invoice.title' => 'Are you sure you want to delete this invoice?',
|
||||
'in.popup.delete_single_invoice.message' => 'Your invoice will be permanently deleted.',
|
||||
|
||||
'in.popup.delete_invoice.title' => 'Are you sure you want to delete invoice number {number}?',
|
||||
'in.popup.delete_invoice.message' => 'Your invoice will be permanently deleted.',
|
||||
|
||||
'in.popup.delete_client.title' => 'Are you sure you want to delete client {name}?',
|
||||
'in.popup.delete_client.message' => 'Your client will be permanently deleted.',
|
||||
|
||||
'in.total_net' => 'Total Net',
|
||||
'in.total_invoices' => 'Total Invoices',
|
||||
'in.n-abbreviation' => 'n.',
|
||||
|
||||
'in.doc.taxable_doc' => 'Taxable Document',
|
||||
'in.doc.advance_doc' => 'Advance Document',
|
||||
|
||||
'in.doc.number' => 'Number',
|
||||
'in.doc.variable_symbol' => 'Variable symbol',
|
||||
|
||||
'in.doc.customer' => 'Customer',
|
||||
'in.doc.supplier' => 'Supplier',
|
||||
|
||||
'in.doc.date_of_issue' => 'Date of issue',
|
||||
'in.doc.date_of_delivery' => 'Date of delivery',
|
||||
'in.doc.due_date' => 'Due date',
|
||||
|
||||
'in.doc.headquarters' => 'Headquarters',
|
||||
|
||||
'in.doc.sum_to_pay' => 'Total to pay',
|
||||
'in.doc.bank_account_number' => 'Bank Number',
|
||||
|
||||
'in.doc.item.name' => 'Item',
|
||||
'in.doc.item.amount' => 'Amount',
|
||||
'in.doc.item.price_per_unit' => 'Unit Price',
|
||||
'in.doc.item.total' => 'Total',
|
||||
'in.doc.item.vat_rate' => 'Vat Rate',
|
||||
'in.doc.item.vat' => 'Vat',
|
||||
'in.doc.item.total_with_vat' => 'Total with Vat',
|
||||
|
||||
'in.doc.discount' => 'Discount',
|
||||
'in.doc.vat_base' => 'VAT Base',
|
||||
|
||||
'in.doc.thanks' => 'Thank you for choosing our services.',
|
||||
'in.doc.not_vat_payer' => "We aren't VAT payers.",
|
||||
|
||||
'in.doc.creator' => 'Issuer',
|
||||
|
||||
'in.doc.created_by_app' => 'Generated by <a href=":url">:app_name</a>',
|
||||
|
||||
'in.notify.subject' => 'You have new invoice from company :company',
|
||||
'in.notify.message' => ':company send you invoice. You can find it in attachment of this email.',
|
||||
|
||||
'in.route_title.invoices' => 'Invoices',
|
||||
'in.route_title.client' => 'Client',
|
||||
'in.route_title.client_detail' => 'Client',
|
||||
'in.route_title.client_invoices' => 'Client Invoices',
|
||||
|
||||
'in.share.share_invoice' => 'Share Your Invoice',
|
||||
'in.share.type_email' => 'Type email address...',
|
||||
'in.share.submit_share' => 'Send Invoice',
|
||||
'in.share.invoice_sended' => 'Your invoice has been sent successfully',
|
||||
'in.sort_by_net' => 'Sort By Total Net',
|
||||
'in.sort_by_invoice_number' => 'Sort By Invoice Number',
|
||||
|
||||
'in.button_sorting' => 'Sorting',
|
||||
|
||||
'in.billing_info' => 'Billing Information',
|
||||
|
||||
'in.doc.revers_charge' => 'Revers Charge',
|
||||
'in.doc.tax_transfer_liability' => 'Transfer of tax liability',
|
||||
];
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user