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 c0e59206
authored
May 13, 2021
by
Vladislav
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#19459 Вывод для основного аккаунта списка его РК из кеша
1 parent
3f4c855c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
84 additions
and
69 deletions
app/Http/Controllers/TokensController.php
app/Models/Campaigns.php
app/Models/Tokens.php
resources/js/Pages/Tokens/Edit.vue
routes/web.php
app/Http/Controllers/TokensController.php
View file @
c0e5920
...
...
@@ -10,6 +10,8 @@ use Illuminate\Support\Facades\Auth;
use
Illuminate\Support\Facades\Redirect
;
use
Illuminate\Support\Facades\Request
;
use
Inertia\Inertia
;
use
phpDocumentor\Reflection\Types\Boolean
;
use
phpDocumentor\Reflection\Types\Integer
;
class
TokensController
extends
Controller
{
...
...
@@ -47,7 +49,7 @@ class TokensController extends Controller
),
'cities'
=>
(
$token
->
type
==
Tokens
::
GOAL
?
[]
:
null
),
],
'campaigns'
=>
$token
->
campaigns
,
'campaigns'
=>
$token
->
campaigns
NotForManaged
,
'types'
=>
$mainToken
->
count
()
&&
$token
->
type
!=
Tokens
::
MAIN
?
[
Tokens
::
GOAL
=>
'Целевой аккаунт'
]
:
[
Tokens
::
MAIN
=>
'Основной аккаунт'
,
Tokens
::
GOAL
=>
'Целевой аккаунт'
],
...
...
@@ -65,15 +67,34 @@ class TokensController extends Controller
return
Redirect
::
back
()
->
with
(
'success'
,
'Token updated.'
);
}
public
function
updateCampaigns
(
Tokens
$token
)
public
function
managedCampaign
(
Tokens
$token
,
$campaign_id
,
$managed
)
{
$token
->
update
(
Request
::
validate
([
'campaigns'
=>
[
'array'
,
'exists:'
.
app
(
Campaigns
::
class
)
->
getTable
()],
])
);
$campaign
=
$token
->
campaigns
()
->
find
(
$campaign_id
);
if
(
!
$campaign
)
{
return
Redirect
::
back
();
}
$campaign
->
update
([
'manage'
=>
!!
$managed
,
]);
return
Redirect
::
back
()
->
with
(
'success'
,
'Campaign '
.
(
$managed
?
'added'
:
'deleted'
)
.
'.'
);
}
public
function
enabledCampaign
(
Tokens
$token
,
$campaign_id
,
$enabled
)
{
$campaign
=
$token
->
campaigns
()
->
find
(
$campaign_id
);
if
(
!
$campaign
)
{
return
Redirect
::
back
();
}
$campaign
->
update
([
'enabled'
=>
!!
$enabled
,
]);
return
Redirect
::
back
()
->
with
(
'success'
,
'Campaign
s updated
.'
);
return
Redirect
::
back
()
->
with
(
'success'
,
'Campaign
'
.
(
$enabled
?
'enabled'
:
'disabled'
)
.
'
.'
);
}
public
function
destroy
(
Tokens
$token
)
...
...
app/Models/Campaigns.php
View file @
c0e5920
...
...
@@ -25,7 +25,9 @@ class Campaigns extends Model
'relevant_keywords_setting_budget_percent'
,
'relevant_keywords_setting_optimize_goal_id'
,
'attribution_model'
,
'updated'
'updated'
,
'manage'
,
'enabled'
,
];
protected
$casts
=
[
...
...
@@ -42,4 +44,9 @@ class Campaigns extends Model
{
$query
->
where
(
'manage'
,
true
);
}
public
function
scopeNotForManaged
(
$query
)
{
$query
->
where
(
'manage'
,
false
);
}
}
app/Models/Tokens.php
View file @
c0e5920
...
...
@@ -37,4 +37,9 @@ class Tokens extends Model
{
return
$this
->
campaigns
()
->
forManaged
();
}
public
function
campaignsNotForManaged
()
{
return
$this
->
campaigns
()
->
notForManaged
();
}
}
resources/js/Pages/Tokens/Edit.vue
View file @
c0e5920
...
...
@@ -36,30 +36,26 @@
</div>
</form>
</div>
<div
v-if=
"
state.campaigns.length || state.token_
campaigns.length"
>
<div
v-if=
"
campaigns.length || token.
campaigns.length"
>
<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
"
<
form
v-if=
"campaigns.length"
@
submit
.
prevent=
"campaignAdd
"
class=
"flex flex-wrap"
>
<
loading-button
:loading=
"campaign_add_form.processing
"
class=
"btn-indigo hover:underline
"
tabindex=
"-1
"
type=
"submit
"
>
Add
</button>
<select-input
v-model=
"state.campaign_id"
:readonly=
"state.campaign_id"
</loading-button>
<select-input
v-model=
"campaign_add_form.campaign_id"
:error=
"campaign_add_form.errors.campaign_id"
:readonly=
"campaign_add_form.campaign_id"
class=
"px-6"
>
<option
v-for=
"campaign in
state.
campaigns"
:value=
"campaign.id"
>
<option
v-for=
"campaign in 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"
>
...
...
@@ -70,13 +66,16 @@
<th
class=
"px-6 pt-6 pb-4"
>
Name
</th>
<th
class=
"px-6 pt-6 pb-4"
>
Action
</th>
</tr>
<tr
v-for=
"campaign in
state.token_
campaigns"
:key=
"campaign.id"
<tr
v-for=
"campaign in
token.
campaigns"
:key=
"campaign.id"
class=
"hover:bg-gray-100 focus-within:bg-gray-100"
>
<td
class=
"border-t py-3"
>
{{
campaign
.
name
}}
</td>
<td
class=
"border-t py-3"
>
<input
:id=
"'campaign-enabled-' + campaign.id"
:checked=
"campaign.enabled"
type=
"checkbox"
>
<input
:id=
"'campaign-enabled-' + campaign.id"
:checked=
"campaign.enabled"
@
change=
"campaignEnabled(campaign.id, !campaign.enabled)"
type=
"checkbox"
>
<label
:for=
"'campaign-enabled-' + campaign.id"
>
Enabled
</label>
<button
class=
"text-red-600 hover:underline"
tabindex=
"-1"
...
...
@@ -87,7 +86,7 @@
</button>
</td>
</tr>
<tr
v-if=
"
state.token_
campaigns.length === 0"
>
<tr
v-if=
"
token.
campaigns.length === 0"
>
<td
class=
"border-t px-6 py-4"
colspan=
"4"
>
No campaigns found.
</td>
</tr>
</table>
...
...
@@ -152,12 +151,10 @@ export default {
api
:
this
.
token
.
api
,
type
:
this
.
token
.
type
,
}),
campaigns_form
:
this
.
$inertia
.
form
(),
state
:
{
campaign_add_form
:
this
.
$inertia
.
form
({
campaign_id
:
null
,
campaigns
:
this
.
filterCampaigns
(
this
.
token
.
campaigns
),
token_campaigns
:
this
.
token
.
campaigns
,
},
}),
campaigns_form
:
this
.
$inertia
.
form
(),
}
},
methods
:
{
...
...
@@ -169,52 +166,34 @@ export default {
this
.
$inertia
.
delete
(
this
.
route
(
'token.destroy'
,
this
.
token
.
id
))
}
},
campaignsUpdate
()
{
this
.
campaigns_form
.
post
(
this
.
route
(
'token.campaigns.update'
,
this
.
token
.
id
),
{
campaigns
:
this
.
state
.
token_campaigns
.
map
(
campaign
=>
campaign
.
id
),
})
campaignEnabled
(
campaign_id
,
enabled
)
{
this
.
$inertia
.
post
(
this
.
route
(
'token.campaign.enabled'
,
[
this
.
token
.
id
,
campaign_id
,
enabled
?
1
:
0
,
]));
},
campaignDestroy
(
campaign_id
)
{
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
,
}
this
.
$inertia
.
post
(
this
.
route
(
'token.campaign.managed'
,
[
this
.
token
.
id
,
campaign_id
,
0
,
]));
}
},
campaignAdd
()
{
let
campaign_id
=
this
.
state
.
campaign_id
;
let
campaign_id
=
this
.
campaign_add_form
.
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
,
}
}
this
.
campaign_add_form
.
post
(
this
.
route
(
'token.campaign.managed'
,
[
this
.
token
.
id
,
campaign_id
,
1
,
]));
},
filterCampaigns
(
token_campaigns
)
{
...
...
routes/web.php
View file @
c0e5920
...
...
@@ -169,8 +169,11 @@ Route::get('token/edit/{token}', [TokensController::class, 'edit'])
Route
::
post
(
'token/edit/{token}'
,
[
TokensController
::
class
,
'update'
])
->
name
(
'token.update'
)
->
middleware
(
'auth'
);
Route
::
post
(
'token/campaigns/edit/{token}'
,
[
TokensController
::
class
,
'updateCampaigns'
])
->
name
(
'token.campaigns.update'
)
Route
::
post
(
'token/campaigns/managed/{token}/{campaign_id}/{managed}'
,
[
TokensController
::
class
,
'managedCampaign'
])
->
name
(
'token.campaign.managed'
)
->
middleware
(
'auth'
);
Route
::
post
(
'token/campaigns/enabled/{token}/{campaign_id}/{enabled}'
,
[
TokensController
::
class
,
'enabledCampaign'
])
->
name
(
'token.campaign.enabled'
)
->
middleware
(
'auth'
);
Route
::
delete
(
'token/delete/{token}'
,
[
TokensController
::
class
,
'destroy'
])
->
name
(
'token.destroy'
)
...
...
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