ticket 90

envoi de la fiche vers Arcadia après upload de nouveau visuel
Gestion de retour en erreur avant la liaison avec Arcadia
Check des dimensions et du type avant liaison vers Arcadia
This commit is contained in:
Olivier Legat 2021-06-03 17:06:18 +02:00
parent 06d370d24a
commit 8ec157e6bd
3 changed files with 129 additions and 3 deletions

View file

@ -902,6 +902,8 @@ class MediaController extends Controller
$n->taille = $this->formatBytes($this->get_file_size($destinationPath . $filename));
$im = new \imagick($destinationPath . $filename);
//pour dev sous windows (pour cause de bug sur imagick avec les chemins relatifs)
//$im = new \imagick(realpath($destinationPath.$filename));
$resolutions = $im->getImageResolution();
$n->resolution = round($resolutions['x'] * 2.54, 2);
$imageprops = $im->getImageGeometry();
@ -976,11 +978,55 @@ class MediaController extends Controller
return json_encode($response);
}
/**
* Vérification des clés pour liaison arcadia avant création, mise à jour
*
*/
public function checkRefKey(Request $request)
{
Auth::user()->authorizeRoles([config('roles.const.ADMIN')]);
$media_id = $request->input('media_id');
$media = Media::find($media_id);
//il faut check les dimensions de l'image
//pour les cas sujet, type vue, type media qui nous interesse
$code_sujet = $media->sujet_id;
$type_vue = $media->typevue_id;
$type_media = $media->typemedia_id;
$extension = $media->extension;
$largeur = $media->largeur;
$hauteur = $media->hauteur;
//si on est sur un sujet arcadia (donc pas le sujet Groupe)
if ($media->sujet->sujet_arcadia) {
//le check est requis
$doCheck = true;
//cas d'exclusion BAT
if ($type_vue == 19) {
$doCheck = false;
}
if ($type_media == 6) {
$doCheck = false;
}
}
if ($doCheck) {
if ($extension == 'png') {
if ($largeur == 1800) {
if ($hauteur == 1800) {
//ok
} else {
//fail hauteur
return json_encode(array('status' => false, 'error' => "Les dimensions requises sont 1800px par 1800px, veuillez charger un autre média"));
}
} else {
//fail largeur
return json_encode(array('status' => false, 'error' => "Les dimensions requises sont 1800px par 1800px, veuillez charger un autre média"));
}
} else {
//fail type de fichier
return json_encode(array('status' => false, 'error' => "Le type de fichier doit être PNG, veuillez charger un autre média"));
}
}
if ($media) {
$refs = ArcadiaLink::getRefKey($media);
if (count($refs) > 0){

View file

@ -158,11 +158,81 @@
type: 'updateMedia',
media: JSON.parse(message)
});
//on vient d'upload un fichier.
// Si c'est lié a Arcadia on check les clés refs
if (this.storeMedia.arcadia_id !== null) {
//le media n'est pas lock car on a pu upload mais on vérifie quand meme
if (this.storeMedia.isLocked === 0) {
this.CheckRefKey(this.SaveMedia);
}
}
this.$loading.hide();
},
uploadFileComplete() {
alert("Media uploadé !");
},
CheckRefKey(callback) {
axios.post('/ajax/check-ref-key', {
media_id: this.storeMedia.id
}).then(response => {
if (response.data === false) {
$.fancybox.close();
$.fancyMessage({
title: "Erreur",
message: "Vous devez avoir au minimum 1 clé de référentiel.",
type: "error"
});
} else {
//update de la fiche vers arcadia
if(response.data.status===false) {
$.fancyMessage({
title: "Erreur",
message: response.data.error,
type: "error"
});
} else {
callback();
}
}
}).catch(function (error) {
console.log(error);
$.fancybox.close();
$.fancyMessage({
title: "Erreur",
message: "Erreur lors de l'opération, merci d'actualiser la page.",
type: "error"
});
});
},
SaveMedia() {
axios.post('/ajax/save-media', {
media: this.storeMedia
}).then(response => {
this.$loading.hide();
if (response.data.status === true) {
this.$store.commit({
type: 'updateMedia',
media: response.data.datas
});
$.fancyMessage({
title: "Sauvegarde d'un média",
message: "Les données ont bien été enregistrées",
type: "info"
});
} else {
$.fancyMessage({title: "Sauvegarde d'un média", message: response.data.error, type: "error"});
}
}).catch(function (error) {
this.$loading.hide();
$.fancybox.close();
$.fancyMessage({
title: "Sauvegarde d'un média",
message: "Erreur lors de l'opération, merci d'actualiser la page.",
type: "error"
});
console.log(error);
});
},
}
}
</script>

View file

@ -293,12 +293,22 @@
type: "error"
});
} else {
let result = confirm("Êtes-vous sur de vouloir lancer le traitement ?");
if (result !== true){
if(response.data.status===false) {
this.$loading.hide();
$.fancyMessage({
title: "Erreur",
message: response.data.error,
type: "error"
});
return false;
} else {
let result = confirm("Êtes-vous sur de vouloir lancer le traitement ?");
if (result !== true){
this.$loading.hide();
return false;
}
callback();
}
callback();
}
}).catch(function (error) {
console.log(error);