/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.service.impl;

import com.rjconsultores.ventaboletos.dao.ProductoServicioDAO;
import com.rjconsultores.ventaboletos.entidad.ProdClaseServicio;
import com.rjconsultores.ventaboletos.entidad.ProdFormaPago;
import com.rjconsultores.ventaboletos.entidad.ProdMarca;
import com.rjconsultores.ventaboletos.entidad.ProdMercado;
import com.rjconsultores.ventaboletos.entidad.ProdPuntoVenta;
import com.rjconsultores.ventaboletos.entidad.ProdRuta;
import com.rjconsultores.ventaboletos.entidad.ProdTipoptovta;
import com.rjconsultores.ventaboletos.entidad.ProdVigencia;
import com.rjconsultores.ventaboletos.entidad.ProductoServicio;
import com.rjconsultores.ventaboletos.service.ProductoServicioService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import java.util.Calendar;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author Rafius
 */
@Service("productoServicioService")
public class ProductoServicioServiceImpl implements ProductoServicioService {

    @Autowired
    private ProductoServicioDAO productoServicioDAO;

    public List<ProductoServicio> obtenerTodos() {
        return productoServicioDAO.obtenerTodos();
    }

    public ProductoServicio obtenerID(Integer id) {
        return productoServicioDAO.obtenerID(id);
    }

    @Transactional
    public ProductoServicio suscribir(ProductoServicio entidad) {
        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.TRUE);

        return productoServicioDAO.suscribir(entidad);
    }

    @Transactional
    public ProductoServicio actualizacion(ProductoServicio entidad) {
        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.TRUE);

        return productoServicioDAO.actualizacion(entidad);
    }

    @Transactional
    public void borrar(ProductoServicio entidad) {

        entidad = this.obtenerID(entidad.getProductoservicioId());
        for (ProdClaseServicio p : entidad.getProdClaseServicioList()) {
            p.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
            p.setFecmodif(Calendar.getInstance().getTime());
            p.setActivo(Boolean.FALSE);
        }
        for (ProdFormaPago p : entidad.getProdFormaPagoList()) {
            p.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
            p.setFecmodif(Calendar.getInstance().getTime());
            p.setActivo(Boolean.FALSE);
        }
        for (ProdMarca p : entidad.getProdMarcaList()) {
            p.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
            p.setFecmodif(Calendar.getInstance().getTime());
            p.setActivo(Boolean.FALSE);
        }
        for (ProdMercado p : entidad.getProdMercadoList()) {
            p.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
            p.setFecmodif(Calendar.getInstance().getTime());
            p.setActivo(Boolean.FALSE);
        }
        for (ProdPuntoVenta p : entidad.getProdPuntoVentaList()) {
            p.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
            p.setFecmodif(Calendar.getInstance().getTime());
            p.setActivo(Boolean.FALSE);
        }
        for (ProdRuta p : entidad.getProdRutaList()) {
            p.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
            p.setFecmodif(Calendar.getInstance().getTime());
            p.setActivo(Boolean.FALSE);
        }
        for (ProdTipoptovta p : entidad.getProdTipoptovtaList()) {
            p.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
            p.setFecmodif(Calendar.getInstance().getTime());
            p.setActivo(Boolean.FALSE);
        }
        for (ProdVigencia p : entidad.getProdVigenciaList()) {
            p.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
            p.setFecmodif(Calendar.getInstance().getTime());
            p.setActivo(Boolean.FALSE);
        }

        entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
        entidad.setFecmodif(Calendar.getInstance().getTime());
        entidad.setActivo(Boolean.FALSE);

        productoServicioDAO.actualizacion(entidad);
    }
    @Transactional
    public void borrarFisico(ProductoServicio entidad) {
        productoServicioDAO.borrar(entidad);
    }

    public List<ProductoServicio> buscar(String descproductoservicio) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<ProductoServicio> obtener(ProductoServicio ps) {
        return productoServicioDAO.obtener(ps);
    }
}
