/*
* The MIT License
*
* Copyright 2012 Universidad de Montemorelos A. C.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package mx.edu.um.mateo.general.dao.impl;
import java.lang.String;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import mx.edu.um.mateo.colportor.dao.AsociadoDao;
import mx.edu.um.mateo.colportor.dao.ColportorDao;
import mx.edu.um.mateo.colportor.model.Asociado;
import mx.edu.um.mateo.colportor.model.Colportor;
import mx.edu.um.mateo.contabilidad.dao.EjercicioDao;
import mx.edu.um.mateo.contabilidad.facturas.model.ProveedorFacturas;
import mx.edu.um.mateo.contabilidad.model.Ejercicio;
import mx.edu.um.mateo.general.dao.BaseDao;
import mx.edu.um.mateo.general.dao.InicializaDao;
import mx.edu.um.mateo.general.dao.OrganizacionDao;
import mx.edu.um.mateo.general.dao.ProveedorDao;
import mx.edu.um.mateo.general.dao.ReporteDao;
import mx.edu.um.mateo.general.dao.RolDao;
import mx.edu.um.mateo.general.dao.UsuarioDao;
import mx.edu.um.mateo.general.model.Empresa;
import mx.edu.um.mateo.general.model.Organizacion;
import mx.edu.um.mateo.general.model.Rol;
import mx.edu.um.mateo.general.model.Usuario;
import mx.edu.um.mateo.general.utils.Constantes;
import mx.edu.um.mateo.inventario.dao.AlmacenDao;
import mx.edu.um.mateo.inventario.model.Almacen;
import mx.edu.um.mateo.inventario.model.Estatus;
import mx.edu.um.mateo.rh.dao.ClaveEmpleadoDao;
import mx.edu.um.mateo.rh.model.ClaveEmpleado;
import mx.edu.um.mateo.rh.model.Empleado;
import mx.edu.um.mateo.rh.model.TipoEmpleado;
import mx.edu.um.mateo.rh.service.EmpleadoManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
/**
*
* @author J. David Mendoza <jdmendoza@um.edu.mx>
*/
@Repository
@Transactional
public class InicializaDaoHibernate extends BaseDao implements InicializaDao {
@Autowired
private ReporteDao reporteDao;
@Autowired
private OrganizacionDao organizacionDao;
@Autowired
private EjercicioDao ejercicioDao;
@Autowired
private UsuarioDao usuarioDao;
@Autowired
private RolDao rolDao;
@Autowired
private EmpleadoManager empleadoManager;
@Autowired
private AlmacenDao almacenDao;
@Autowired
private AsociadoDao asociadoDao;
@Autowired
private ColportorDao colportorDao;
@Autowired
private ProveedorDao proveedorDao;
@Autowired
private ClaveEmpleadoDao claveDao;
@Override
public void inicializa(String username, String password) {
reporteDao.inicializa();
Organizacion organizacion = new Organizacion("UM", "UM",
"Universidad de Montemorelos");
organizacion = organizacionDao.crea(organizacion);
Rol rol = new Rol("ROLE_ADMIN");
rolDao.crea(rol);
rol = new Rol("ROLE_ORG");
rolDao.crea(rol);
rol = new Rol("ROLE_ASOC"); //Rol Asociado - Colportaje
rolDao.crea(rol);
rol = new Rol("ROLE_CLP"); //Rol Colportor
rolDao.crea(rol);
rol = new Rol("ROLE_EMP");
rolDao.crea(rol);
rol = new Rol("ROLE_USER");
rolDao.crea(rol);
rol = new Rol("ROLE_PRV");
rolDao.crea(rol);
Usuario usuario = new Usuario(username, password, "Admin", "User", "User");
Long almacenId = 0l;
actualizaUsuario:
for (Empresa empresa : organizacion.getEmpresas()) {
for (Almacen almacen : empresa.getAlmacenes()) {
almacenId = almacen.getId();
break actualizaUsuario;
}
}
Almacen almacen = almacenDao.obtiene(almacenId);
for (Ejercicio ejercicio : ejercicioDao.lista(organizacion.getId())) {
usuario.setEjercicio(ejercicio);
break;
}
String[] roles = new String[]{new Rol("ROLE_ADMIN").getAuthority()};
usuario = usuarioDao.crea(usuario, almacenId, roles);
//Tipo de Empleado
TipoEmpleado tipoEmpleado = new TipoEmpleado();
tipoEmpleado.setOrganizacion(organizacion);
tipoEmpleado.setDescripcion("Denominacional");
tipoEmpleado.setPrefijo("980");
currentSession().save(tipoEmpleado);
//grabando empleado
usuario = new Empleado("test", "apPaterno", "apMaterno", username + "@um.edu.mx", username, "1080506", Boolean.TRUE, "M", "Direccion", "A",
"curp", "RFCSTRI", "Cuenta", "imss",
10, 1, new BigDecimal(1), "SI", "ife", "A",
"padre", "madre", "A", "conyuge", Boolean.FALSE, Boolean.TRUE, "iglesia",
"responsabilidad", password, tipoEmpleado);
HashSet rolesEmp = new HashSet();
rolesEmp.add(rolDao.obtiene("ROLE_EMP"));
usuario.setAlmacen(almacen);
usuario.setEmpresa(almacen.getEmpresa());
usuario.setRoles(rolesEmp);
for (Ejercicio ejercicio : ejercicioDao.lista(organizacion.getId())) {
usuario.setEjercicio(ejercicio);
break;
}
ClaveEmpleado claveEmpleado = new ClaveEmpleado("9800001", "A", "PruebaInicializa", new Date());
empleadoManager.saveEmpleado((Empleado) usuario, usuario, claveEmpleado);
Estatus estatus = new Estatus(Constantes.ABIERTA, 100);
currentSession().save(estatus);
estatus = new Estatus(Constantes.PENDIENTE, 200);
currentSession().save(estatus);
estatus = new Estatus(Constantes.CERRADA, 300);
currentSession().save(estatus);
estatus = new Estatus(Constantes.FACTURADA, 400);
currentSession().save(estatus);
estatus = new Estatus(Constantes.CANCELADA, 500);
currentSession().save(estatus);
//Datos de colportores
usuario = new Asociado(username + "@asoc.um.edu.mx", password, username + "@asoc.edu.mx", "test", "apPaterno", "apMaterno", "A", "12345", "8262630900", "Direccion", "Colonia", "Municipio");
usuario.setAlmacen(almacen);
usuario.setEmpresa(almacen.getEmpresa());
for (Ejercicio ejercicio : ejercicioDao.lista(organizacion.getId())) {
usuario.setEjercicio(ejercicio);
break;
}
Set rolesClp = new HashSet();
rolesClp.add(rolDao.obtiene("ROLE_ASOC"));
usuario.setRoles(rolesClp);
asociadoDao.crea((Asociado) usuario, null);
usuario = new Colportor(username + "@clp.um.edu.mx", password, username + "@clp.edu.mx", "test", "apPaterno", "apMaterno", "54321", "A", "8262630900", "Direccion", "Colonia", "Municipio", "tipoClp", "0890626", new Date());
usuario.setAlmacen(almacen);
usuario.setEmpresa(almacen.getEmpresa());
for (Ejercicio ejercicio : ejercicioDao.lista(organizacion.getId())) {
usuario.setEjercicio(ejercicio);
break;
}
rolesClp = new HashSet();
rolesClp.add(rolDao.obtiene("ROLE_CLP"));
usuario.setRoles(rolesClp);
colportorDao.crea((Colportor) usuario, usuario);
usuario = new ProveedorFacturas("testA", password, "nombre", "appaterno", "apmaterno", username + "@prv.edu.mx",
"TEST-01", "TEST-01", "TEST-01", "TEST-01", "TEST-01", "TEST-01",
"TEST-01", "TEST-01", "TEST-01", "a", "TEST-01");
usuario.setAlmacen(almacen);
usuario.setEmpresa(almacen.getEmpresa());
for (Ejercicio ejercicio : ejercicioDao.lista(organizacion.getId())) {
usuario.setEjercicio(ejercicio);
break;
}
Set rolesPrv = new HashSet();
rolesPrv.add(rolDao.obtiene("ROLE_PRV"));
usuario.setRoles(rolesPrv);
usuarioDao.crea(usuario, almacenId, roles);
}
@Override
public void inicializaRoles(String username, String password, String roles) {
reporteDao.inicializa();
Organizacion organizacion = new Organizacion("UM", "UM",
"Universidad de Montemorelos");
organizacion = organizacionDao.crea(organizacion);
Long almacenId = 0l;
actualizaUsuario:
for (Empresa empresa : organizacion.getEmpresas()) {
for (Almacen almacen : empresa.getAlmacenes()) {
almacenId = almacen.getId();
break actualizaUsuario;
}
}
Almacen almacen = almacenDao.obtiene(almacenId);
Ejercicio ejercicio = null;
for (Ejercicio ej : ejercicioDao.lista(organizacion.getId())) {
ejercicio = ej;
break;
}
Rol rol = null;
Usuario usuario = null;
String[] arrayRol = roles.split(",");
for (String r : arrayRol) {
rol = new Rol(r);
rolDao.crea(rol);
usuario = new Usuario(username, password, "Hobbit", "frodo", "baggins");
usuario.setEjercicio(ejercicio);
usuario = usuarioDao.crea(usuario, almacenId, new String[]{new Rol(r).getAuthority()});
}
}
}