nc.noumea.mairie.appock.viewmodel.CreateDemandeArticleSpecifiqueViewModel.java Source code

Java tutorial

Introduction

Here is the source code for nc.noumea.mairie.appock.viewmodel.CreateDemandeArticleSpecifiqueViewModel.java

Source

package nc.noumea.mairie.appock.viewmodel;

/*-
 * #%L
 * Logiciel de Gestion des approvisionnements et des stocks des fournitures administratives de la Mairie de Nouma
 * %%
 * Copyright (C) 2017 Mairie de Nouma, Nouvelle-Caldonie
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public
 * License along with this program.  If not, see
 * <http://www.gnu.org/licenses/gpl-3.0.html>.
 * #L%
 */

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.zkoss.bind.BindUtils;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.NotifyChange;
import org.zkoss.zk.ui.select.annotation.VariableResolver;
import org.zkoss.zk.ui.select.annotation.WireVariable;
import org.zkoss.zkplus.spring.DelegatingVariableResolver;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Window;

import nc.noumea.mairie.appock.dto.ArticleSpecifique;
import nc.noumea.mairie.appock.entity.Fournisseur;
import nc.noumea.mairie.appock.entity.SousFamille;
import nc.noumea.mairie.appock.entity.TypeColisage;
import nc.noumea.mairie.appock.repositories.FournisseurRepository;
import nc.noumea.mairie.appock.repositories.TypeColisageRepository;
import nc.noumea.mairie.appock.services.SousFamilleService;

@VariableResolver(DelegatingVariableResolver.class)
public class CreateDemandeArticleSpecifiqueViewModel {

    @WireVariable
    SousFamilleService sousFamilleService;

    @WireVariable
    FournisseurRepository fournisseurRepository;

    @WireVariable
    TypeColisageRepository typeColisageRepository;

    private ArticleSpecifique articleSpecifique = new ArticleSpecifique();

    public ArticleSpecifique getArticleSpecifique() {
        return articleSpecifique;
    }

    public void setArticleSpecifique(ArticleSpecifique articleSpecifique) {
        this.articleSpecifique = articleSpecifique;
    }

    public List<Fournisseur> getListeFournisseur() {
        List<Fournisseur> result = fournisseurRepository.findAllByOrderByNom();
        result.add(0, null);
        return result;
    }

    public List<SousFamille> getListeSousFamille() {
        List<SousFamille> result = sousFamilleService.findAllForCatalogueActifOrderByLibelle();
        result.add(0, null);
        return result;
    }

    public List<TypeColisage> getListeTypeColisage() {
        List<TypeColisage> result = typeColisageRepository.findAllByOrderByLibelle();
        result.add(0, null);
        return result;
    }

    @Command
    public void creeArticleSpecifique(@BindingParam("win") Window window) {
        List<String> listeProprieteErreur = new ArrayList<>();
        if (articleSpecifique.getQuantite() == null) {
            listeProprieteErreur.add("une quantit");
        }
        if (StringUtils.isBlank(articleSpecifique.getLibelle())) {
            listeProprieteErreur.add("un libell");
        }
        if (articleSpecifique.getTypeColisage() == null) {
            listeProprieteErreur.add("un type de colisage");
        }
        if (articleSpecifique.getTypeColisage() != null && articleSpecifique.getQuantiteColisage() == null
                && !articleSpecifique.getTypeColisage().getLibelle().equals("UNITE")) {
            listeProprieteErreur.add("une quantit de colisage");
        }
        if (StringUtils.isBlank(articleSpecifique.getObservation())) {
            listeProprieteErreur.add("une motivation");
        }

        if (CollectionUtils.isNotEmpty(listeProprieteErreur)) {
            Messagebox.show("Vous devez renseigner " + StringUtils.join(listeProprieteErreur, ", "), "Erreur",
                    Messagebox.OK, Messagebox.ERROR);
            return;
        }

        window.detach();
        Map<String, Object> args = new HashMap<>();
        args.put("articleSpecifique", articleSpecifique);
        BindUtils.postGlobalCommand(null, null, "creeNouvelleSortieStock", args);
    }

    @Command
    @NotifyChange("*")
    public void majQuantiteReel() {
        // Rien  faire, on fait juste un notify pour que la quantit relle se recalcule
    }
}