protected string ObtenerHistorial(string sIdAsunto) { //Cronología del asunto string sFecha = ""; StringBuilder sb = new StringBuilder(); try { sb.Append("<table id='tblTareas' style='width:700px; text-align:left;'>"); //............................ estado........... Fecha................Profesional sb.Append("<colgroup><col style='width:135px;' /><col style='width:75px;' /><col style='width:490px;' /></colgroup>"); //sb.Append("<tbody>"); SqlDataReader dr = ASUNTOESTADO.SelectByt382_idasunto(tr, int.Parse(sIdAsunto)); while (dr.Read()) { sb.Append("<tr style='height:16px;'>"); sb.Append("<td style='padding-left:5px;'>" + dr["Estado"].ToString() + "</td>"); sFecha = dr["t385_fecha"].ToString(); if (sFecha != "") { sFecha = DateTime.Parse(dr["t385_fecha"].ToString()).ToShortDateString(); } sb.Append("<td>" + sFecha + "</td>"); sb.Append("<td>" + dr["nomRecurso"].ToString() + "</td>"); sb.Append("</tr>"); } dr.Close(); dr.Dispose(); //sb.Append("</tbody>"); sb.Append("</table>"); return("OK@#@" + sb.ToString());; } catch (Exception ex) { return("Error@#@" + Errores.mostrarError("Error al obtener la cronología del asunto.", ex)); } }
protected string Grabar(string strDatosTarea, string slIntegrantes) { string sResul = "", sAccionBD, sIdRecurso; int iCodAsunto; byte iEstadoAnt, iEstadoAct; double dEtp, dEtr; bool bNotificable = false, bEnviarAlerta = true, bAlta = false; try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccionSerializable(oConn); } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex); return(sResul); } try { #region Datos asunto string[] aDatosTarea = Regex.Split(strDatosTarea, "##"); // 0 -> id asunto (si -1 es un alta) // 1 -> descripcion corta // 2 -> descripcion larga // 3 -> referencia externa // 4 -> f/notificación // 5 -> f/fin // 6 -> f/limite // 7 -> alerta // 8 -> departamento // 9 -> tipo // 10-> estado // 11-> severidad // 12-> prioridad // 13-> sistema // 14-> esfuerzo planificado // 15-> esfuerzo real // 16 -> observaciones // 17 -> cod une (vacío) // 18 -> nº proyecto // 19 -> notificador // 20 -> responsable // 21 -> estado anterior // 22 -> desc Responsable // 23 -> desc Tipo // 24 -> desc Estado // 25 -> desc Severidad // 26 -> desc Prioridad // 27 -> Des PE // 28 -> t305_idproyectosubnodo if (aDatosTarea[0] == "") { iCodAsunto = -1; } else { iCodAsunto = int.Parse(aDatosTarea[0]); } //if (aDatosTarea[4] != "") dFno = DateTime.Parse(aDatosTarea[4]); //if (aDatosTarea[5] != "") dFfp = DateTime.Parse(aDatosTarea[5]); //if (aDatosTarea[6] != "") dFLi = DateTime.Parse(aDatosTarea[6]); DateTime dFno = DateTime.Parse(aDatosTarea[4]); DateTime dFfp = DateTime.Parse((aDatosTarea[5] == "") ? "01/01/1900" : aDatosTarea[5]); DateTime dFLi = DateTime.Parse((aDatosTarea[6] == "") ? "01/01/1900" : aDatosTarea[6]); if (aDatosTarea[21] == "") { iEstadoAnt = byte.Parse(aDatosTarea[10]); } else { iEstadoAnt = byte.Parse(aDatosTarea[21]); } iEstadoAct = byte.Parse(aDatosTarea[10]); if (aDatosTarea[14] != "") { dEtp = double.Parse(aDatosTarea[14]); } else { dEtp = 0; } if (aDatosTarea[15] != "") { dEtr = double.Parse(aDatosTarea[15]); } else { dEtr = 0; } if (iCodAsunto == -1) { bAlta = true; iCodAsunto = ASUNTO.Insert(tr, int.Parse(aDatosTarea[28]), Utilidades.unescape(aDatosTarea[7]), Utilidades.unescape(aDatosTarea[1]), Utilidades.unescape(aDatosTarea[2]), Utilidades.unescape(aDatosTarea[8]), iEstadoAct, dEtp, dEtr, dFfp, dFLi, dFno, Utilidades.unescape(aDatosTarea[19]), Utilidades.unescape(aDatosTarea[16]), byte.Parse(aDatosTarea[12]), Utilidades.unescape(aDatosTarea[3]), int.Parse(Session["NUM_EMPLEADO_ENTRADA"].ToString()), int.Parse(Session["NUM_EMPLEADO_ENTRADA"].ToString()), byte.Parse(aDatosTarea[11]), Utilidades.unescape(aDatosTarea[13]), int.Parse(aDatosTarea[9])); ASUNTOESTADO.Insert(tr, iCodAsunto, iEstadoAct, int.Parse(Session["NUM_EMPLEADO_ENTRADA"].ToString())); } else { bAlta = false; ASUNTO.Update(tr, Utilidades.unescape(aDatosTarea[7]), Utilidades.unescape(aDatosTarea[1]), Utilidades.unescape(aDatosTarea[2]), Utilidades.unescape(aDatosTarea[8]), iEstadoAct, dEtp, dEtr, dFfp, dFLi, dFno, iCodAsunto, Utilidades.unescape(aDatosTarea[19]), Utilidades.unescape(aDatosTarea[16]), byte.Parse(aDatosTarea[12]), Utilidades.unescape(aDatosTarea[3]), int.Parse(aDatosTarea[20]), byte.Parse(aDatosTarea[11]), Utilidades.unescape(aDatosTarea[13]), int.Parse(aDatosTarea[9])); if (iEstadoAnt != iEstadoAct) { ASUNTOESTADO.Insert(tr, iCodAsunto, iEstadoAct, int.Parse(Session["NUM_EMPLEADO_ENTRADA"].ToString())); } } #endregion #region Datos integrantes if (slIntegrantes == "") {//Tenemos lista vacía. No hacemos nada } else {//Con la cadena generamos una lista y la recorremos para grabar cada elemento string[] aPersonas = Regex.Split(slIntegrantes, @"///"); for (int i = 0; i < aPersonas.Length - 1; i++) { if (aPersonas[i] != "") { string[] aIntegrante = Regex.Split(aPersonas[i], @"##"); sAccionBD = aIntegrante[0]; sIdRecurso = aIntegrante[1]; if (aIntegrante[2] == "1") { bNotificable = true; } else { bNotificable = false; } switch (sAccionBD) { case "I": ASUNTORECURSOS.Insert(tr, int.Parse(sIdRecurso), iCodAsunto, bNotificable); break; case "D": //delete ASUNTORECURSOS.Delete(tr, iCodAsunto, int.Parse(sIdRecurso)); break; case "U": //update ASUNTORECURSOS.Update(tr, int.Parse(sIdRecurso), iCodAsunto, bNotificable); break; } } }//for } #endregion #region Enviar correos if (bEnviarAlerta) { //if (bAlta) sCad = "I"; //else sCad = "U"; EnviarCorreoAlerta(iCodAsunto.ToString(), strDatosTarea, slIntegrantes, bAlta); } #endregion Conexion.CommitTransaccion(tr); sResul = "OK@#@" + iCodAsunto.ToString(); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al grabar los datos del asunto", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }