Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Письменов Дмитрий Иванович
/
yourroomads
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 3f4c855c
authored
May 13, 2021
by
Vladislav
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#19459 Вывод для основного аккаунта списка его РК из кеша
1 parent
d001fdbc
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
106 additions
and
8 deletions
app/Http/Controllers/TokensController.php
resources/js/Pages/Tokens/Edit.vue
routes/web.php
app/Http/Controllers/TokensController.php
View file @
3f4c855
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
namespace
App\Http\Controllers
;
namespace
App\Http\Controllers
;
use
App\Models\Campaigns
;
use
App\Models\Tokens
;
use
App\Models\Tokens
;
use
App\Service\API\API
;
use
App\Service\API\API
;
use
App\Service\Requests\APIRequest
;
use
App\Service\Requests\APIRequest
;
...
@@ -42,11 +43,12 @@ class TokensController extends Controller
...
@@ -42,11 +43,12 @@ class TokensController extends Controller
'campaigns'
=>
(
'campaigns'
=>
(
$token
->
type
===
Tokens
::
MAIN
$token
->
type
===
Tokens
::
MAIN
?
$token
->
campaignsForManaged
?
$token
->
campaignsForManaged
:
null
:
[]
),
),
'cities'
=>
(
$token
->
type
==
Tokens
::
GOAL
?
[]
:
null
),
'cities'
=>
(
$token
->
type
==
Tokens
::
GOAL
?
[]
:
null
),
],
],
'types'
=>
$mainToken
->
count
()
&&
$token
->
type
!=
Tokens
::
MAIN
'campaigns'
=>
$token
->
campaigns
,
'types'
=>
$mainToken
->
count
()
&&
$token
->
type
!=
Tokens
::
MAIN
?
[
Tokens
::
GOAL
=>
'Целевой аккаунт'
]
:
?
[
Tokens
::
GOAL
=>
'Целевой аккаунт'
]
:
[
Tokens
::
MAIN
=>
'Основной аккаунт'
,
Tokens
::
GOAL
=>
'Целевой аккаунт'
],
[
Tokens
::
MAIN
=>
'Основной аккаунт'
,
Tokens
::
GOAL
=>
'Целевой аккаунт'
],
]);
]);
...
@@ -63,6 +65,17 @@ class TokensController extends Controller
...
@@ -63,6 +65,17 @@ class TokensController extends Controller
return
Redirect
::
back
()
->
with
(
'success'
,
'Token updated.'
);
return
Redirect
::
back
()
->
with
(
'success'
,
'Token updated.'
);
}
}
public
function
updateCampaigns
(
Tokens
$token
)
{
$token
->
update
(
Request
::
validate
([
'campaigns'
=>
[
'array'
,
'exists:'
.
app
(
Campaigns
::
class
)
->
getTable
()],
])
);
return
Redirect
::
back
()
->
with
(
'success'
,
'Campaigns updated.'
);
}
public
function
destroy
(
Tokens
$token
)
public
function
destroy
(
Tokens
$token
)
{
{
$token
->
delete
();
$token
->
delete
();
...
...
resources/js/Pages/Tokens/Edit.vue
View file @
3f4c855
...
@@ -36,15 +36,41 @@
...
@@ -36,15 +36,41 @@
</div>
</div>
</form>
</form>
</div>
</div>
<div
v-if=
"
token.campaigns
"
>
<div
v-if=
"
state.campaigns.length || state.token_campaigns.length
"
>
<h2
class=
"mt-12 font-bold text-2xl"
>
Campaigns
</h2>
<h2
class=
"mt-12 font-bold text-2xl"
>
Campaigns
</h2>
<div
class=
"mt-4 flex flex-wrap"
>
<div
v-if=
"state.campaigns.length"
class=
"flex flex-wrap"
>
<button
class=
"btn-indigo hover:underline"
tabindex=
"-1"
type=
"button"
@
click=
"campaignAdd"
>
Add
</button>
<select-input
v-model=
"state.campaign_id"
:readonly=
"state.campaign_id"
class=
"px-6"
>
<option
v-for=
"campaign in state.campaigns"
:value=
"campaign.id"
>
{{
campaign
.
name
}}
</option>
</select-input>
</div>
<form
@
submit
.
prevent=
"campaignsUpdate"
>
<loading-button
:loading=
"campaigns_form.processing"
class=
"btn-indigo ml-auto"
type=
"submit"
>
Update campaigns
</loading-button>
</form>
</div>
<div
class=
"mt-4 flex flex-wrap"
>
</div>
<div
class=
"mt-6 bg-white rounded shadow overflow-x-auto"
>
<div
class=
"mt-6 bg-white rounded shadow overflow-x-auto"
>
<table
class=
"w-full whitespace-nowrap"
>
<table
class=
"w-full whitespace-nowrap"
>
<tr
class=
"text-left font-bold"
>
<tr
class=
"text-left font-bold"
>
<th
class=
"px-6 pt-6 pb-4"
>
Name
</th>
<th
class=
"px-6 pt-6 pb-4"
>
Name
</th>
<th
class=
"px-6 pt-6 pb-4"
>
Action
</th>
<th
class=
"px-6 pt-6 pb-4"
>
Action
</th>
</tr>
</tr>
<tr
v-for=
"campaign in
token.
campaigns"
:key=
"campaign.id"
<tr
v-for=
"campaign in
state.token_
campaigns"
:key=
"campaign.id"
class=
"hover:bg-gray-100 focus-within:bg-gray-100"
>
class=
"hover:bg-gray-100 focus-within:bg-gray-100"
>
<td
class=
"border-t py-3"
>
<td
class=
"border-t py-3"
>
{{
campaign
.
name
}}
{{
campaign
.
name
}}
...
@@ -55,13 +81,13 @@
...
@@ -55,13 +81,13 @@
<button
class=
"text-red-600 hover:underline"
<button
class=
"text-red-600 hover:underline"
tabindex=
"-1"
tabindex=
"-1"
type=
"button"
type=
"button"
@
click=
"campaignDestroy"
@
click=
"campaignDestroy
(campaign.id)
"
>
>
Delete Campaign
Delete Campaign
</button>
</button>
</td>
</td>
</tr>
</tr>
<tr
v-if=
"
token.
campaigns.length === 0"
>
<tr
v-if=
"
state.token_
campaigns.length === 0"
>
<td
class=
"border-t px-6 py-4"
colspan=
"4"
>
No campaigns found.
</td>
<td
class=
"border-t px-6 py-4"
colspan=
"4"
>
No campaigns found.
</td>
</tr>
</tr>
</table>
</table>
...
@@ -112,8 +138,9 @@ export default {
...
@@ -112,8 +138,9 @@ export default {
},
},
layout
:
Layout
,
layout
:
Layout
,
props
:
{
props
:
{
campaigns
:
Array
,
token
:
Object
,
token
:
Object
,
types
:
Object
types
:
Object
,
},
},
remember
:
'form'
,
remember
:
'form'
,
data
()
{
data
()
{
...
@@ -125,6 +152,12 @@ export default {
...
@@ -125,6 +152,12 @@ export default {
api
:
this
.
token
.
api
,
api
:
this
.
token
.
api
,
type
:
this
.
token
.
type
,
type
:
this
.
token
.
type
,
}),
}),
campaigns_form
:
this
.
$inertia
.
form
(),
state
:
{
campaign_id
:
null
,
campaigns
:
this
.
filterCampaigns
(
this
.
token
.
campaigns
),
token_campaigns
:
this
.
token
.
campaigns
,
},
}
}
},
},
methods
:
{
methods
:
{
...
@@ -136,9 +169,58 @@ export default {
...
@@ -136,9 +169,58 @@ export default {
this
.
$inertia
.
delete
(
this
.
route
(
'token.destroy'
,
this
.
token
.
id
))
this
.
$inertia
.
delete
(
this
.
route
(
'token.destroy'
,
this
.
token
.
id
))
}
}
},
},
campaignDestroy
()
{
campaignsUpdate
()
{
this
.
campaigns_form
.
post
(
this
.
route
(
'token.campaigns.update'
,
this
.
token
.
id
),
{
campaigns
:
this
.
state
.
token_campaigns
.
map
(
campaign
=>
campaign
.
id
),
})
},
campaignDestroy
(
campaign_id
)
{
if
(
confirm
(
'Are you sure you want to delete this campaign?'
))
{
if
(
confirm
(
'Are you sure you want to delete this campaign?'
))
{
let
token_campaigns
=
this
.
state
.
token_campaigns
.
filter
(
campaign
=>
campaign
.
id
!==
Number
(
campaign_id
)
);
this
.
state
=
{
...
this
.
state
,
campaigns
:
this
.
filterCampaigns
(
token_campaigns
),
token_campaigns
:
token_campaigns
,
}
}
},
campaignAdd
()
{
let
campaign_id
=
this
.
state
.
campaign_id
;
if
(
!
campaign_id
)
{
return
;
}
let
campaign
=
this
.
state
.
campaigns
.
filter
(
campaign
=>
campaign
.
id
===
Number
(
campaign_id
)
).
shift
();
if
(
campaign
)
{
let
token_campaigns
=
[
...
this
.
state
.
token_campaigns
,
{
...
campaign
,
},
];
this
.
state
=
{
...
this
.
state
,
campaign_id
:
null
,
campaigns
:
this
.
filterCampaigns
(
token_campaigns
),
token_campaigns
:
token_campaigns
,
}
}
}
},
filterCampaigns
(
token_campaigns
)
{
return
this
.
campaigns
.
filter
(
campaign
=>
token_campaigns
.
map
((
campaign
)
=>
campaign
.
id
).
indexOf
(
campaign
.
id
)
===
-
1
)
},
},
},
},
}
}
...
...
routes/web.php
View file @
3f4c855
...
@@ -169,6 +169,9 @@ Route::get('token/edit/{token}', [TokensController::class, 'edit'])
...
@@ -169,6 +169,9 @@ Route::get('token/edit/{token}', [TokensController::class, 'edit'])
Route
::
post
(
'token/edit/{token}'
,
[
TokensController
::
class
,
'update'
])
Route
::
post
(
'token/edit/{token}'
,
[
TokensController
::
class
,
'update'
])
->
name
(
'token.update'
)
->
name
(
'token.update'
)
->
middleware
(
'auth'
);
->
middleware
(
'auth'
);
Route
::
post
(
'token/campaigns/edit/{token}'
,
[
TokensController
::
class
,
'updateCampaigns'
])
->
name
(
'token.campaigns.update'
)
->
middleware
(
'auth'
);
Route
::
delete
(
'token/delete/{token}'
,
[
TokensController
::
class
,
'destroy'
])
Route
::
delete
(
'token/delete/{token}'
,
[
TokensController
::
class
,
'destroy'
])
->
name
(
'token.destroy'
)
->
name
(
'token.destroy'
)
->
middleware
(
'auth'
);
->
middleware
(
'auth'
);
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment