public static void VerificarAssemblyVersion(CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); string a = Convert.ToString(db.WF_GetAssemblyVersion_qry()); if (a != Sesion.VersionParaControl) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Aplicacion.AssemblyVersionInvalida(Sesion.Version, a); } db = null; }
public static void Leer(CedEntidades.WF Wf) { Cedeira.SV.db db = new Cedeira.SV.db(Wf.Sesion); db.WF_Op_get(Wf); if (Wf.IdFlow == string.Empty) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.OpInexistente(); } else { Wf.Log = LeerLog(Wf); Wf.EventosPosibles = LeerEventosPosiblesOpExist(Wf); Wf.EventosXLotePosibles = LeerEventosXLotePosiblesOpExist(Wf); } }
public static CedEntidades.WF Nueva(string IdFlow, string IdCircuito, int IdNivSeg, string DescrOp, CedEntidades.Sesion Sesion) { CedEntidades.WF wf = new CedEntidades.WF(); wf.Sesion = Sesion; Cedeira.SV.db db = new Cedeira.SV.db(wf.Sesion); CedEntidades.Flow flow = db.WF_Flow_get(IdFlow); if (flow.IdFlow == IdFlow) { wf.IdFlow = flow.IdFlow; wf.DescrFlow = flow.DescrFlow; } else { throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.FlowInvalido(); } CedEntidades.Circuito circuito = db.WF_Circuito_get(IdCircuito); if (circuito.IdCircuito == IdCircuito) { wf.IdCircuito = circuito.IdCircuito; wf.IdCircuitoOrig = circuito.IdCircuito; wf.DescrCircuito = circuito.DescrCircuito; } else { throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.CircuitoInvalido(); } CedEntidades.NivSeg nivSeg = db.WF_NivSeg_get(IdNivSeg); if (nivSeg.IdNivSeg == IdNivSeg) { wf.IdNivSeg = nivSeg.IdNivSeg; wf.DescrNivSeg = nivSeg.DescrNivSeg; } else { throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.NivSegInvalido(); } wf.DescrOp = DescrOp; wf.IdOp = 0; wf.IdEstado = String.Empty; wf.UltActualiz = String.Empty; wf.DescrEstado = String.Empty; wf.Log = LeerLog(wf); wf.EventosPosibles = LeerEventosPosiblesOpNueva(wf); return wf; }
public static void Leer(CedEntidades.Usuario Usuario, CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); DataView dv = db.US_Usuario_get(Usuario.IdUsuario); if (dv.Table.Rows.Count != 0) { Usuario.IdUsuario = Convert.ToString(dv.Table.Rows[0]["IdUsuario"]); Usuario.Nombre = Convert.ToString(dv.Table.Rows[0]["Nombre"]); Usuario.Activo = Convert.ToBoolean(dv.Table.Rows[0]["Activo"]); if (dv.Table.Rows[0]["Alias"] != System.DBNull.Value) { Usuario.Alias = Convert.ToString(dv.Table.Rows[0]["Alias"]); } else { Usuario.Alias = String.Empty; } Usuario.FecAlta = Convert.ToDateTime(dv.Table.Rows[0]["FecAlta"]); Usuario.FecBaja = Convert.ToDateTime(dv.Table.Rows[0]["FecBaja"]); if (dv.Table.Rows[0]["Email"] != System.DBNull.Value) { Usuario.Email = Convert.ToString(dv.Table.Rows[0]["Email"]); } else { Usuario.Email = String.Empty; } dv = null; Usuario.PerteneceA = db.US_PerteneceA(Usuario.IdUsuario); Usuario.NoPerteneceA = db.US_NoPerteneceA(Usuario.IdUsuario); } else { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Usuario.Inexistente(); } }
private static List<CedEntidades.Evento> LeerEventosPosiblesOpNueva(CedEntidades.WF Wf) { Cedeira.SV.db db = new Cedeira.SV.db(Wf.Sesion); return db.WF_EventosIniciales_qry(Wf); ; }
public static void LeerEstado(CedEntidades.Estado Estado, CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); db.WF_Estado_get(Estado); }
/// <summary> /// Obtener todos los datos relacionados al evento solicitado /// </summary> /// <param name="Evento">Evento cuyo detalle se solicita</param> /// <param name="Sesion">Sesion</param> public static void LeerEvento(CedEntidades.Evento Evento, CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); db.WF_Evento_get(Evento); }
/// <summary> /// /// </summary> /// <param name="Wf"></param> public static void EjecutarHandler(CedEntidades.WF Wf) { Cedeira.SV.db db = new Cedeira.SV.db(Wf.Sesion); db.WF_EjecutarHandler(Wf.Handler); }
public static DateTime FechaDB(CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); return db.FechaDB; }
public static List<CedEntidades.NivSeg> IdNivSegCombo(CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); return db.WF_NivSeg_lst(); }
public static List<CedEntidades.Circuito> IdCircuitoCombo(CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); return db.WF_Circuito_lst(); }
public static List<CedEntidades.Evento> EventosIniciales(CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); return db.WF_EventosIniciales_qry(); }
public static List<CedEntidades.Grupo> GruposXAcceso(string IdAcceso, CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); return db.WF_GruposXAcceso(IdAcceso); }
private static List<CedEntidades.Log> LeerLog(CedEntidades.WF Wf) { Cedeira.SV.db db = new Cedeira.SV.db(Wf.Sesion); return db.WF_LogXOp_qry(Wf.IdOp); }
public static List<CedEntidades.Acceso> IdAccesoCombo(CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); return db.WF_Acceso_lst(); }
public static List<CedEntidades.Estado> IdEstadoXFlowCombo(CedEntidades.WF Wf, CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); return db.WF_Estado_qry(Wf.IdFlow); }
public static List<CedEntidades.Usuario> Lista(List<CedEntidades.Grupo> ExcluirGrupos, CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); DataView dv = db.US_Usuario_qry(ExcluirGrupos); return (List<CedEntidades.Usuario>) ArmarLista(dv, Sesion); }
public static List<CedEntidades.Evento> EventosXLote(string IdFlow, CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); return db.WF_EventosXLote_qry(IdFlow); }
private static List<CedEntidades.Evento> LeerEventosXLotePosiblesOpExist(CedEntidades.WF Wf) { Cedeira.SV.db db = new Cedeira.SV.db(Wf.Sesion); return db.WF_EventosXLotePosibles_qry(Wf); }
public static List<CedEntidades.Flow> IdFlowCombo(CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); return db.WF_Flow_lst(); }
private static List<CedEntidades.EsqSegEvenPos> LeerEsquemaSegEventosPosibles(CedEntidades.WF Wf) { Cedeira.SV.db db = new Cedeira.SV.db(Wf.Sesion); List<CedEntidades.EsqSegEvenPos> esquemaSegEventosPosibles = db.WF_EsquemaSegEventosPosibles_qry(Wf); // "Restar" intervenciones registradas en el Log if (Wf.Log.Count > 0) { // Ubico el evento que seteo el estado actual int j = -1; // primera intervencion posterior al seteo del estado actual for (int i = Wf.Log.Count - 1; i >= 0; i--) { if (Wf.Log[i].Estado != Wf.IdEstado) { break; } else { j = i; } } if (j != -1) { // Hay intervenciones posteriores al seteo del estado actual bool SeRestaronIntervenciones = false; for (int i = j + 1; i < Wf.Log.Count; i++) { // Encontrar el EsquemaSeg al que corresponde la intervencion List<CedEntidades.EsqSegEvenPos> subEsquemaSegEventosPosibles = esquemaSegEventosPosibles.FindAll((delegate(CedEntidades.EsqSegEvenPos e){return e.Evento.Id == Wf.Log[i].Evento.Id;})); for (int h = 0; h < subEsquemaSegEventosPosibles.Count; h++) { if (Wf.Log[i].Grupo.Id == subEsquemaSegEventosPosibles[h].Grupo.Id) { bool CumpleDebeSerSP = false; switch (subEsquemaSegEventosPosibles[h].DebeSerSP) { case "S": if (Wf.Log[i].Supervisor) { CumpleDebeSerSP = true; } break; case "N": if (!Wf.Log[i].Supervisor) { CumpleDebeSerSP = true; } break; case "NA": CumpleDebeSerSP = true; break; } if (CumpleDebeSerSP) { if (Wf.Log[i].SupervisorNivel >= subEsquemaSegEventosPosibles[h].SupervisorNivelDsd && Wf.Log[i].SupervisorNivel <= subEsquemaSegEventosPosibles[h].SupervisorNivelHst) { // En eventos que no producen cambios de estado: CantInterv debe ser 0, // en esos casos no se lleva control de intervenciones if (subEsquemaSegEventosPosibles[h].CantInterv != 0) { // Restar intervencion subEsquemaSegEventosPosibles[h].CantInterv =subEsquemaSegEventosPosibles[h].CantInterv - 1; SeRestaronIntervenciones = true; //Elimino registro if (subEsquemaSegEventosPosibles[h].CantInterv == 0) { subEsquemaSegEventosPosibles.RemoveAt(h); } } break; } } } } } if (!SeRestaronIntervenciones) { esquemaSegEventosPosibles = db.WF_EsquemaSegEventosPosibles_qry(Wf); } } } // Chequeo que a todos los eventos posibles les hayan quedado al menos // un EsquemaSeg, si no: lo elimino. return esquemaSegEventosPosibles; }
private static bool GrupoHabilitadoParaAcceso(string idGrupo, CedEntidades.WF Wf) { try { Cedeira.SV.db db = new Cedeira.SV.db(Wf.Sesion); List<CedEntidades.Grupo> listGrupos = db.WF_GruposXAcceso(Wf.Sesion.IdAcceso); listGrupos.Find(delegate(CedEntidades.Grupo e) { return e.Id == idGrupo; }); return listGrupos.Count != 0; } catch { return false; } }
/// <summary> /// Ejecutar evento /// </summary> /// <param name="Wf">Objeto de WF</param> /// <param name="Evento">Evento a ejecutar</param> /// <param name="DevolverHandler">Devuelve un handler ?</param> /// <returns></returns> public static string EjecutarEvento(CedEntidades.WF Wf, CedEntidades.Evento Evento, bool DevolverHandler) { Cedeira.SV.db db = new Cedeira.SV.db(Wf.Sesion); List<CedEntidades.Evento> eventosPosibles = Wf.EventosPosibles.FindAll(delegate(CedEntidades.Evento e){return e.Id == Evento.Id;}); List<CedEntidades.EsqSegEvenPos> esquemaSegEventosPosibles = LeerEsquemaSegEventosPosibles(Wf).FindAll(delegate(CedEntidades.EsqSegEvenPos e) { return e.Evento.Id == Evento.Id; }); CedEntidades.EsqSegEvenPos esquemaSegEventosPosiblesUsado = new CedEntidades.EsqSegEvenPos(); List<CedEntidades.GrupoXUsuario> gruposXUsuario = new List<CedEntidades.GrupoXUsuario>(); switch (IntervencionPermitida(Wf, Evento, ref eventosPosibles, ref esquemaSegEventosPosibles, ref esquemaSegEventosPosiblesUsado, ref gruposXUsuario)) { case "EventoInvalido": throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.EventoInvalido(); case "EventoSinSeg": throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.EventoSinSeg(); case "UsuarioNoCumpleSeg": throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.UsuarioNoCumpleSeg(); case "CXO": throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.CXO(); default: break; } if (Evento.IdEstadoHst.IdEstado.Equals(string.Empty)) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.EstadoHstNoDefinido(); } if (Evento.IdEstadoDsd.IdEstado.Equals(string.Empty)) { // Evento inicial (alta de operacion) if (!(esquemaSegEventosPosibles.Count == 1 && esquemaSegEventosPosiblesUsado.CantInterv == 1)) { // (los eventos iniciales no pueden tener varias intervenciones) throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.EstadoHstInvalido(); } else { Wf.IdEstado = Evento.IdEstadoHst.IdEstado; Wf.DescrEstado = Evento.IdEstadoHst.DescrEstado; if (!DevolverHandler) { Wf.IdOp = db.WF_Op_ins(Wf.IdFlow, Wf.IdCircuito, Wf.IdNivSeg, Wf.IdEstado, Wf.DescrOp, Evento.Id, Wf.Sesion.Usuario.IdUsuario, Evento.Comentario, gruposXUsuario[0].Id, gruposXUsuario[0].Supervisor, gruposXUsuario[0].SupervisorNivel); return String.Empty; } else { return db.WF_Op_insHandler(Wf.IdFlow, Wf.IdCircuito, Wf.IdNivSeg, Wf.IdEstado, Wf.DescrOp, Evento.Id, Wf.Sesion.Usuario.IdUsuario.ToString(), Evento.Comentario, gruposXUsuario[0].Id, gruposXUsuario[0].Supervisor, gruposXUsuario[0].SupervisorNivel); } } } else { // Chequeo si esta es la ultima intervencion (que posibilita el cambio de estado) if (esquemaSegEventosPosibles.Count == 1 && esquemaSegEventosPosiblesUsado.CantInterv == 1) { // Cambio el estado switch (Evento.IdEstadoHst.IdEstado) { case ("<EstadoAnt>"): // Estado virtual for (int i = Wf.Log.Count - 1; i >= 0; i--) { if (Wf.Log[i].Estado != Wf.IdEstado) { Wf.IdCircuito = Wf.Log[i].Circuito.IdCircuito; Wf.IdEstado = Wf.Log[i].Estado; //Revisar que la decripcion del estado sea el campo comentario de Wf.log[i] Wf.DescrEstado = Wf.Log[i].Comentario; if (!DevolverHandler) { db.WF_Op_upd(Wf.IdOp, Wf.IdFlow, Wf.IdCircuito, Wf.IdNivSeg, Wf.IdEstado, Evento.Id, Wf.Sesion.Usuario.IdUsuario, Evento.Comentario, gruposXUsuario[0].Id, gruposXUsuario[0].Supervisor, gruposXUsuario[0].SupervisorNivel, Wf.UltActualiz); return String.Empty; } else { return db.WF_Op_updHandler(Wf.IdOp, Wf.IdFlow, Wf.IdCircuito, Wf.IdNivSeg, Wf.IdEstado, Evento.Id, Wf.Sesion.Usuario.IdUsuario, Evento.Comentario, gruposXUsuario[0].Id, gruposXUsuario[0].Supervisor, gruposXUsuario[0].SupervisorNivel, Wf.UltActualiz); } } } throw new Microsoft.ApplicationBlocks.ExceptionManagement.WF.EstadoVirtualMalConfigurado(); case ("<ElMismo>"): List<CedEntidades.Estado> listaEstados = IdEstadoCombo(Wf.Sesion); CedEntidades.Estado estado = listaEstados.Find((delegate(CedEntidades.Estado e) { return e.DescrEstado == Wf.Log[Wf.Log.Count - 1].Estado; })); string idEstado = ""; if (estado != null) { idEstado = estado.IdEstado; } Wf.IdEstado = idEstado; if (!DevolverHandler) { db.WF_Op_upd(Wf.IdOp, Wf.IdFlow, Wf.IdCircuito, Wf.IdNivSeg, Wf.IdEstado, Evento.Id, Wf.Sesion.Usuario.IdUsuario, Evento.Comentario, gruposXUsuario[0].Id, gruposXUsuario[0].Supervisor, gruposXUsuario[0].SupervisorNivel, Wf.UltActualiz); return String.Empty; } else { return db.WF_Op_updHandler(Wf.IdOp, Wf.IdFlow, Wf.IdCircuito, Wf.IdNivSeg, Wf.IdEstado, Evento.Id, Wf.Sesion.Usuario.IdUsuario, Evento.Comentario, gruposXUsuario[0].Id, gruposXUsuario[0].Supervisor, gruposXUsuario[0].SupervisorNivel, Wf.UltActualiz); } default: // Estado determinado Wf.IdEstado = Evento.IdEstadoHst.IdEstado; Wf.DescrEstado = Evento.IdEstadoHst.DescrEstado; if (!DevolverHandler) { db.WF_Op_upd(Wf.IdOp, Wf.IdFlow, Wf.IdCircuito, Wf.IdNivSeg, Wf.IdEstado, Evento.Id, Wf.Sesion.Usuario.IdUsuario, Evento.Comentario, gruposXUsuario[0].Id, gruposXUsuario[0].Supervisor, gruposXUsuario[0].SupervisorNivel, Wf.UltActualiz); return String.Empty; } else { return db.WF_Op_updHandler(Wf.IdOp, Wf.IdFlow, Wf.IdCircuito, Wf.IdNivSeg, Wf.IdEstado, Evento.Id, Wf.Sesion.Usuario.IdUsuario, Evento.Comentario, gruposXUsuario[0].Id, gruposXUsuario[0].Supervisor, gruposXUsuario[0].SupervisorNivel, Wf.UltActualiz); } } } else { // Registro intervencion sin cambiar el estado, pero // actualizo WF_Op por si cambio el Circuito o el NivSeg if (!DevolverHandler) { db.WF_Op_upd(Wf.IdOp, Wf.IdFlow, Wf.IdCircuito, Wf.IdNivSeg, Wf.IdEstado, Evento.Id, Wf.Sesion.Usuario.IdUsuario, Evento.Comentario, gruposXUsuario[0].Id, gruposXUsuario[0].Supervisor, gruposXUsuario[0].SupervisorNivel, Wf.UltActualiz); return String.Empty; } else { return db.WF_Op_updHandler(Wf.IdOp, Wf.IdFlow, Wf.IdCircuito, Wf.IdNivSeg, Wf.IdEstado, Evento.Id, Wf.Sesion.Usuario.IdUsuario, Evento.Comentario, gruposXUsuario[0].Id, gruposXUsuario[0].Supervisor, gruposXUsuario[0].SupervisorNivel, Wf.UltActualiz); } } } }
public static List<CedEntidades.Estado> IdEstadoCombo(CedEntidades.Sesion Sesion) { Cedeira.SV.db db = new Cedeira.SV.db(Sesion); return db.WF_Estado_qry(); }
public static void Crear(string IdUsuario, string Password, string Dominio, string CnnStr, string IdAcceso, string Version, string VersionParaControl, CedEntidades.Sesion Sesion) { Sesion.IdAcceso = IdAcceso; // Leo el CnnStr de la base de datos Sesion.CnnStr = CnnStr; Sesion.Version = Version; Sesion.VersionParaControl = VersionParaControl; // Chequeo de version del assembly VerificarAssemblyVersion(Sesion); Cedeira.SV.db db = new Cedeira.SV.db(Sesion); List<CedEntidades.Acceso> acceso = db.WF_Acceso_lst().FindAll(delegate(CedEntidades.Acceso e) { return e.IdAcceso == IdAcceso; }); if (acceso.Count == 0) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Sesion.AplicInvalida(); } try { // Verifico que el usuario tenga acceso a la base de datos db.TesteoConexion(Sesion.CnnStr); // Obtengo Parametros Sesion.CXO = db.CXO(); // Obtengo info del usuario CedEntidades.Usuario u = new CedEntidades.Usuario(); u.IdUsuario = IdUsuario; Cedeira.SV.Usuario.Leer(u, Sesion); u.Password = Password; Sesion.Usuario = u; Sesion.Dominio = Dominio; // Chequeo si esta activo if (!Sesion.Usuario.Activo) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Sesion.Usuario.NoActivo(); } // Chequeo si no esta dado de baja if (Sesion.Usuario.FecBaja.Date < DateTime.Now.Date) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Sesion.Usuario.DeBaja(); } // Verifico si el usuario tiene acceso a la aplicacion List<CedEntidades.Grupo> gruposConAccPermitido = db.WF_GruposXAcceso(IdAcceso); bool PuedeEntrar = false; for (int i = 0; i < gruposConAccPermitido.Count; i++) { List<CedEntidades.GrupoXUsuario> perteneceAConAccPermitido = Sesion.Usuario.PerteneceA.FindAll(delegate(CedEntidades.GrupoXUsuario e) { return e.Id == gruposConAccPermitido[i].Id; }); if (perteneceAConAccPermitido.Count > 0) { PuedeEntrar = true; break; } } if (!PuedeEntrar) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Sesion.Usuario.NoHabilitado(); } } catch (Exception ex) { throw new Microsoft.ApplicationBlocks.ExceptionManagement.Sesion.Crear(ex); } }