nc.noumea.mairie.appock.services.impl.DatePrevisionnelleCommandeServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for nc.noumea.mairie.appock.services.impl.DatePrevisionnelleCommandeServiceImpl.java

Source

package nc.noumea.mairie.appock.services.impl;

/*-
 * #%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 nc.noumea.mairie.appock.core.services.impl.GenericServiceImpl;
import nc.noumea.mairie.appock.core.utility.DateUtil;
import nc.noumea.mairie.appock.entity.DatePrevisionnelleCommande;
import nc.noumea.mairie.appock.repositories.DatePrevisionnelleCommandeRepository;
import nc.noumea.mairie.appock.services.AuthHelper;
import nc.noumea.mairie.appock.services.DatePrevisionnelleCommandeService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.data.repository.CrudRepository;
import org.springframework.transaction.annotation.Transactional;

import javax.validation.ValidationException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@org.springframework.stereotype.Service("datePrevisionnelleCommandeService")
@Scope(value = "singleton", proxyMode = ScopedProxyMode.TARGET_CLASS)
@Transactional
public class DatePrevisionnelleCommandeServiceImpl extends GenericServiceImpl<DatePrevisionnelleCommande>
        implements DatePrevisionnelleCommandeService {

    @Autowired
    DatePrevisionnelleCommandeRepository datePrevisionnelleCommandeRepository;

    @Autowired
    AuthHelper authHelper;

    @Override
    public CrudRepository getRepository() {
        return datePrevisionnelleCommandeRepository;
    }

    @Override
    public DatePrevisionnelleCommande create(LocalDate date) {
        if (date == null) {
            throw new ValidationException("La date ne peut pas tre nulle");
        }
        if (datePrevisionnelleCommandeRepository.findOneByDatePrevisionnelle(date.atStartOfDay()) != null) {
            throw new ValidationException("La date prvisionnelle existe dj");
        }
        DatePrevisionnelleCommande datePrevisionnelleCommande = new DatePrevisionnelleCommande();
        datePrevisionnelleCommande.setDatePrevisionnelle(date.atStartOfDay());
        datePrevisionnelleCommande.setCreateUser(authHelper.getCurrentUser().getNomComplet());
        return this.save(datePrevisionnelleCommande);
    }

    @Override
    public DatePrevisionnelleCommande getNextDatePrevisionnelleCommandeANotifier(LocalDateTime dateTime) {
        List<DatePrevisionnelleCommande> listeDatePrevisionnelleCommande = datePrevisionnelleCommandeRepository
                .findAllByDatePrevisionnelleAfterAndNotificationEnvoyeOrderByDatePrevisionnelleAsc(dateTime, false);
        return CollectionUtils.isEmpty(listeDatePrevisionnelleCommande) ? null
                : listeDatePrevisionnelleCommande.get(0);
    }

    @Override
    public void supprimerAnciennesDatesPrevisionnelles() {
        List<DatePrevisionnelleCommande> listeDatePrevisionnelleCommande = datePrevisionnelleCommandeRepository
                .findAllByDatePrevisionnelleBefore(DateUtil.aujourdhui00h00());
        datePrevisionnelleCommandeRepository.delete(listeDatePrevisionnelleCommande);
    }

}