Fix liaison media <-> societes

This commit is contained in:
Yann Gonidec 2019-08-09 10:51:42 +02:00
parent e293d437e7
commit 2c48ab009b
10 changed files with 75 additions and 47 deletions

View file

@ -204,7 +204,7 @@ class ImportArcadiaFiles extends Command
// ---- Suppression du fichier
Storage::disk('arcadia')->delete($filename);
}
// TODO : Import des sociétés
$bar->advance();
}

View file

@ -9,6 +9,7 @@ use App\Http\Traits\MediaTools;
use App\Article;
use App\Marque;
use App\Media;
use App\Dossier;
class ImportMedia extends Command
{
@ -181,7 +182,22 @@ class ImportMedia extends Command
if($record){
$article = Article::where('noArt', $row->noArt)->first();
if($article){
$record->articles()->attach($article->id);
// attache l'article au média
$record->articles()->syncWithoutDetaching ($article->id);
// recherche un dossier lié à la marque de l'article
$marque_id = $article->codMarq;
$dossier = Dossier::whereHas("marques", function($query) use ($marque_id){
$query->where("codMarq", $marque_id);
})->first();
if($dossier){
// attache le dossier marque au Média
$record->dossier_id = $dossier->id;
$record->save();
$this->line("Liason media n°".$row->codeVisuel. " à la marque n°".$article->libMarq);
}else{
$this->line("pas de liaison de marque : le media n°".$row->codeVisuel. " ne peut être lié à l'article n°".$row->noArt);
}
}else{
$this->line("DAM_ASSO_ARTICLE : le media n°".$row->codeVisuel. " ne peut être lié à l'article n°".$row->noArt);
}
@ -210,6 +226,7 @@ class ImportMedia extends Command
foreach ($fileContent->mediaassomarque as $row) {
$record = Media::where('arcadia_id', $row->codeVisuel)->first();
if($record){
// attache la marque au média
$record->marques()->attach($row->codMarq);
}else{
$this->line("DAM_ASSO_MARQUE : le media n°".$row->codeVisuel. " n'existe pas");
@ -221,6 +238,7 @@ class ImportMedia extends Command
}
}
// TODO : Import de l'association des sociétés
$this->line("");
$this->info('Fin du traitement');

View file

@ -12,7 +12,7 @@ use App\Typemedia;
use App\Langue;
use App\Copyright;
use App\Etiquette;
use App\Site;
use App\Societe;
use App\Marque;
use App\Dossier;
use App\Tag;
@ -41,7 +41,7 @@ class MediaController extends Controller
$langues = Langue::all();
$copyrights = Copyright::all();
$etiquettes = Etiquette::all();
$sites = Site::orderBy('libelle')->get();
$societes = Societe::orderBy('libelle')->get();
$marques = Marque::all();
$dossier_id = $request->get('d');
@ -79,7 +79,7 @@ class MediaController extends Controller
'langues'=> $langues,
'copyrights'=> $copyrights,
'etiquettes'=> $etiquettes,
'sites'=> $sites,
'societes'=> $societes,
'marques'=> $marques,
'currentFolder'=> $dossier_id,
'currentSujet'=> $sujet_id,
@ -294,7 +294,7 @@ class MediaController extends Controller
$host = $request->getSchemeAndHttpHost();
$response = array();
$media_id = $request->input('media_id');
$media = Media::where('id', $media_id)->with('sujet')->with('sites')->with('marques')->with('articles')->with('tags:libelle')->first();
$media = Media::where('id', $media_id)->with('sujet')->with('societes')->with('marques')->with('articles')->with('tags:libelle')->first();
if($media){
// stock le média
$response['data'] = $media;
@ -388,13 +388,13 @@ class MediaController extends Controller
}
// ---- Les sites
$media->sites()->detach();
$sSites = $mediaUpdate->sites;
if($sSites != ""){
$sites = explode(",", $sSites);
foreach($sites as $siteId){
$media->sites()->attach($siteId);
// ---- Les sociétés
$media->societes()->detach();
$sSocietes = $mediaUpdate->societes;
if($sSocietes != ""){
$societes = explode(",", $sSocietes);
foreach($societes as $societeId){
$media->societes()->attach($societeId);
}
}

View file

@ -93,11 +93,11 @@ class Media extends Model
}
/**
* The sites that belong to the media.
* The societes that belong to the media.
*/
public function sites()
public function societes()
{
return $this->belongsToMany('App\Site', 'medias_sites', 'media_id', 'site_id');
return $this->belongsToMany('App\Societe', 'medias_societes', 'media_id', 'societe_id');
}
/**

View file

@ -23,6 +23,8 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot()
{
//
if($this->app->environment("prod")){
\URL::forceScheme("https");
}
}
}

View file

@ -7,12 +7,4 @@ use Illuminate\Database\Eloquent\Model;
class Site extends Model
{
/**
* The medias that belong to the sites.
*/
public function medias()
{
return $this->belongsToMany('App\Media', 'medias_sites', 'site_id', 'media_id');
}
}

16
app/Societe.php Normal file
View file

@ -0,0 +1,16 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Societe extends Model
{
/**
* The medias that belong to the societes.
*/
public function medias()
{
return $this->belongsToMany('App\Media', 'medias_societes', 'societe_id', 'media_id');
}
}

16
public/js/app.js vendored
View file

@ -12106,13 +12106,13 @@ $(document).ready(function () {
$.each(result.data.marques, function (index, marque) {
$(".tab_edit .selector_marques .selector_values").append('<li data-value="' + marque.codMarq + '" >' + marque.libMarq + '</li>');
});
initSelector(".selector_marques"); // site lié
initSelector(".selector_marques"); // societés liées
$(".tab_edit .selector_sites .selector_values").html('');
$.each(result.data.sites, function (index, site) {
$(".tab_edit .selector_sites .selector_values").append('<li data-value="' + site.id + '" >' + site.libelle + '</li>');
$(".tab_edit .selector_societes .selector_values").html('');
$.each(result.data.societes, function (index, societe) {
$(".tab_edit .selector_societes .selector_values").append('<li data-value="' + societe.id + '" >' + societe.libelle + '</li>');
});
initSelector(".selector_sites"); // tags
initSelector(".selector_societes"); // tags
if (result.tags) {
$('#tag-editor').tagEditor('addTag', result.tags);
@ -12133,7 +12133,7 @@ $(document).ready(function () {
$(".tab_edit .arcadia_fields").show();
}
$(".tab_edit .article_form, .tab_edit .marque_form, .tab_edit .site_form").hide();
$(".tab_edit .article_form, .tab_edit .marque_form, .tab_edit .societe_form").hide();
switch (result.data.sujet_id) {
case 1:
@ -12148,7 +12148,7 @@ $(document).ready(function () {
case 4:
// Sociétés
$(".tab_edit .site_form").show();
$(".tab_edit .societe_form").show();
break;
default:
@ -12505,7 +12505,7 @@ $(document).ready(function () {
copyright_id: $(".tab_edit #copyrights").val(),
etiquette_id: $(".tab_edit #etiquettes").val(),
tags: $('#tag-editor').tagEditor('getTags')[0].tags,
sites: $(".tab_edit .selector_sites .selector_dataValues").val(),
societes: $(".tab_edit .selector_societes .selector_dataValues").val(),
marques: $(".tab_edit .selector_marques .selector_dataValues").val(),
articles: $(".tab_edit #articles").val(),
published_at: $(".tab_edit #published_at").val()

16
resources/js/media.js vendored
View file

@ -765,12 +765,12 @@ $(document).ready(function() {
});
initSelector(".selector_marques");
// site lié
$(".tab_edit .selector_sites .selector_values").html('');
$.each(result.data.sites, function (index, site) {
$(".tab_edit .selector_sites .selector_values").append('<li data-value="'+site.id+'" >'+site.libelle+'</li>');
// societés liées
$(".tab_edit .selector_societes .selector_values").html('');
$.each(result.data.societes, function (index, societe) {
$(".tab_edit .selector_societes .selector_values").append('<li data-value="'+societe.id+'" >'+societe.libelle+'</li>');
});
initSelector(".selector_sites");
initSelector(".selector_societes");
// tags
if(result.tags){
@ -791,7 +791,7 @@ $(document).ready(function() {
}else{
$(".tab_edit .arcadia_fields").show();
}
$(".tab_edit .article_form, .tab_edit .marque_form, .tab_edit .site_form").hide();
$(".tab_edit .article_form, .tab_edit .marque_form, .tab_edit .societe_form").hide();
switch (result.data.sujet_id) {
case 1: // Visuel Article
$(".tab_edit .article_form").show();
@ -800,7 +800,7 @@ $(document).ready(function() {
$(".tab_edit .marque_form").show();
break;
case 4: // Sociétés
$(".tab_edit .site_form").show();
$(".tab_edit .societe_form").show();
break;
default:
}
@ -1123,7 +1123,7 @@ $(document).ready(function() {
copyright_id : $(".tab_edit #copyrights").val(),
etiquette_id : $(".tab_edit #etiquettes").val(),
tags : $('#tag-editor').tagEditor('getTags')[0].tags,
sites : $(".tab_edit .selector_sites .selector_dataValues").val(),
societes : $(".tab_edit .selector_societes .selector_dataValues").val(),
marques : $(".tab_edit .selector_marques .selector_dataValues").val(),
articles : $(".tab_edit #articles").val(),
published_at : $(".tab_edit #published_at").val(),

View file

@ -97,19 +97,19 @@
</div>
<div class="wrapper arcadia_fields">
<h3>Informations liées au sujet</h3>
<div class="row site_form dataform">
<label for="site">Site</label>
<div class="selector_form selector_sites">
<div class="row societe_form dataform">
<label for="societe">Société</label>
<div class="selector_form selector_societes">
<input type="text" class="selector_filter" name="search" value="" placeholder="Rechercher..." autocomplete="off">
<div class="selector_list">
<ul class="selector_choices" >
@foreach ($sites as $site)
<li data-value="{{$site->id}}" >{{$site->libelle}}</li>
@foreach ($societes as $societe)
<li data-value="{{$societe->id}}" >{{$societe->libelle}}</li>
@endforeach
</ul>
<ul class="selector_values" >
</ul>
<input class="selector_dataValues" type="hidden" name="marques" value="">
<input class="selector_dataValues" type="hidden" name="societes" value="">
</div>
</div>
</div>