Commit 3f4c855c by Vladislav

#19459 Вывод для основного аккаунта списка его РК из кеша

1 parent d001fdbc
...@@ -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,10 +43,11 @@ class TokensController extends Controller ...@@ -42,10 +43,11 @@ 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),
], ],
'campaigns' => $token->campaigns,
'types' => $mainToken->count() && $token->type!=Tokens::MAIN '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();
......
...@@ -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
)
}, },
}, },
} }
......
...@@ -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');
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!