private SignInStatus verificaLdap(string login, string password, string dominio) { SignInStatus ret = SignInStatus.Failure; if ((dominio.ToLower() == "educa.aragon.es") || (dominio.ToLower() == "salud.aragon.es") || (dominio.ToLower() == "aragon.es")) { LdapConnection ldapConnection = new LdapConnection(new LdapDirectoryIdentifier(WebConfigurationManager.AppSettings["ServidorLDAP"], Convert.ToInt32(WebConfigurationManager.AppSettings["PuertoLDAP"]))); try { ldapConnection.AuthType = AuthType.Basic; ldapConnection.Bind(new NetworkCredential("uid=" + login + ",ou=people,o=" + dominio + ",o=isp", password)); ret = SignInStatus.Success; } catch (Exception ex) { if ((!ex.Message.Contains("La credencial proporcionada no es válida")) && !(ex.Message.Contains("The supplied credential is invalid"))) { logger.Fatal("VerificaLdap. Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); } return(SignInStatus.Failure); } return(ret); } else { logger.Info("VerificaLdap. Dominio no válido: " + dominio); return(SignInStatus.Failure); } }
protected void btnAccDeshacerCambio_Click(object sender, EventArgs e) { int iObjetivoId = Convert.ToInt32(this.hdObjetivoId.Value); using (Entities c = new Entities()) { try { ACCION obj = c.CONTENIDO.OfType <ACCION>().Where(o => o.CONTENIDO_ID == iObjetivoId).FirstOrDefault(); if (obj.TIPO_CAMBIO_CONTENIDO_ID != TIPO_CAMBIO_CONTENIDO.SIN_CAMBIOS) { obj.DeshacerCambio(c); SuccessMessage = "Los cambios pendientes del Objetivo se han cancelado."; successMessage.Visible = true; } else { ErrorMessage = "No hay ningún cambio que deshacer."; errorMessage.Visible = true; } } catch (Exception ex) { logger.Fatal("Error al deshacer cambios en Objetivo. Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); ErrorMessage = "Error al deshacer los cambios del Objetivo."; errorMessage.Visible = true; } } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { using (Entities c = new Entities()) { try { if (Request["id"] == null) { Response.Redirect("VerDepartamentos.aspx", false); } else { DEPARTAMENTO d = c.DEPARTAMENTO.Find(Convert.ToInt32(Request["id"])); this.lblDepartamento.Text = d.DESCRIPCION; this.lblDpto.Text = d.DESCRIPCION; Page.Title = "Plan de Gobierno del Departamento de " + d.DESCRIPCION + " | Transparencia Aragón"; Page.MetaKeywords = d.DESCRIPCION + ",plan de gobierno,transparencia, aragon, gobierno abierto"; Page.MetaDescription = "Plan de Gobierno del Departamento de " + d.DESCRIPCION + " del Gobierno de Aragón"; } } catch (Exception ex) { logger.Error("Error en DetalleDepartamento.aspx. Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); } } } }
protected void btnEliminaAcc_Click(object sender, EventArgs e) { if (!String.IsNullOrEmpty(Request["__EVENTARGUMENT"])) { using (Entities c = new Entities()) { try { int id = Convert.ToInt32(Request["__EVENTARGUMENT"]); int iDeptoId = getDptoId(); ACCION acc = c.CONTENIDO.OfType <ACCION>().SingleOrDefault(x => x.CONTENIDO_ID == id); if (acc.TieneAcceso(User.Identity.GetUserId())) { if (acc.YaPublicado()) { //Marcamos el cambio como eliminación acc.FECHA_MODIFICACION = DateTime.Now; acc.AUTOR_MODIFICACION_USUARIO_ID = User.Identity.GetUserId().ToString(); acc.TIPO_CAMBIO_CONTENIDO_ID = TIPO_CAMBIO_CONTENIDO.ELIMINADO; acc.ESTADO_VALIDACION_ID = ESTADOS_VALIDACION.PDTE_VALIDAR; c.CONTENIDO.Attach(acc); c.Entry(acc).State = EntityState.Modified; c.SaveChanges(); SuccessMessage = "Instrumento/actividad marcado para eliminación (se eliminará en la validación)."; successMessage.Visible = true; } else { //Si todavía no ha sido publicado lo eliminamos c.CONTENIDO.Remove(acc); c.SaveChanges(); Response.Redirect("AdminPlan?id=" + iDeptoId.ToString() + "&m=" + "Instrumento/actividad eliminado correctamente.", false); } } else { logger.Info("Acceso - AdminPlan.aspx Usuario: " + User.Identity.GetUserId() + " sin permiso de modificación en Acción: " + id.ToString()); } } catch (Exception ex) { ErrorMessage = "Error al eliminar el instrumento/actividad."; errorMessage.Visible = true; logger.Error("ERROR: AdminPlan.aspx Error al eliminar accion " + Request["__EVENTARGUMENT"] + ". Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); } } } }
/// <summary> /// Añade Objetivo /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnAdd_Click(object sender, EventArgs e) { if (ModelState.IsValid) { if ((!String.IsNullOrEmpty(this.ObjetivoEstrategicoPV.Text))) { int iDeptoId = getDptoId(); using (Entities c = new Entities()) { OBJETIVO obj = new OBJETIVO { AUTOR_CREACION_USUARIO_ID = User.Identity.GetUserId().ToString(), DEPARTAMENTO_ID = iDeptoId, ESTADO_VALIDACION_ID = ESTADOS_VALIDACION.PDTE_VALIDAR, FECHA_CREACION = DateTime.Now, OBJETIVO_ESTRATEGICO_PDTE_VAL = this.ObjetivoEstrategicoPV.Text.Trim(), TIPO_CAMBIO_CONTENIDO_ID = TIPO_CAMBIO_CONTENIDO.ALTA, VISIBLE = false }; c.CONTENIDO.Add(obj); try { c.SaveChanges(); SuccessMessage = "Objetivo guardado correctamente."; successMessage.Visible = true; } catch (Exception ex) { logger.Fatal("Error al crear nuevo objetivo (AdminPlan.aspx). Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); ErrorMessage = "Error al crear nuevo objetivo."; errorMessage.Visible = true; } } } else { ErrorMessage = "Se deben rellenar los campos del formulario."; errorMessage.Visible = true; } } else { ErrorMessage = "Se deben rellenar los campos del formulario."; errorMessage.Visible = true; } }
protected int getDptoId() { int?iDptoId = null; if ((User.IsInRole(AspNetRoles.ADMINISTRADOR)) || (User.IsInRole(AspNetRoles.VALIDADOR))) { if (Request["id"] == null) { Response.Redirect("../Default.aspx", false); } iDptoId = Convert.ToInt32(Request["id"]); } else { //Usuario (accede sólo a los datos de su departamento) using (Entities c = new Entities()) { try { iDptoId = c.USUARIOS.Find(User.Identity.GetUserId().ToString()).DEPARTAMENTOID; if (Request["id"] == null) { Response.Redirect("AdminPlan.aspx?id=" + iDptoId, false); } } catch (Exception ex) { logger.Warn("Error en AdminPlan.aspx. Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); Response.Redirect("../Default.aspx", true); } } } if (iDptoId.HasValue) { return(iDptoId.Value); } else { logger.Error("Usuario sin permisos. Error en AdminPlan.aspx."); Response.Redirect("../Default.aspx", true); return(-1); } }
protected void btnEliminaUserDep_Click(object sender, EventArgs e) { if (!String.IsNullOrEmpty(Request["__EVENTARGUMENT"])) { using (Entities c = new Entities()) { try { string id = (Request["__EVENTARGUMENT"]); USUARIOS usuario = c.USUARIOS.Find(id); usuario.DEPARTAMENTOID = null; c.USUARIOS.Attach(usuario); c.Entry(usuario).State = EntityState.Modified; c.SaveChanges(); SuccessMessage = "Usuario eliminado correctamente."; successMessage.Visible = true; logger.Info("Usuario: " + usuario.USUARIOID + " desasignado del dpto: " + Convert.ToInt32(Request["id"])); //No eliminamos el usuario porque tendrá seguramente información asociada de contenido (autor...), le desasignamos el departamento /*c.USUARIOS.Remove(u); * AspNetUsers anu = c.AspNetUsers.Find(id); * c.AspNetUsers.Remove(anu); * c.SaveChanges(); * Response.Redirect("AdmUsuariosDep?id=" + Request["id"] + "&m=" + "Usuario eliminado correctamente.", false);*/ } catch (Exception ex) { ErrorMessage = "Error al eliminar el usuario."; errorMessage.Visible = true; logger.Error("ERROR: AdmnUsuariosDep.aspx Error al eliminar usuario " + Request["__EVENTARGUMENT"] + ". Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); } } } }
//***********************************************************************************************EXPORTACION****************************** #region ExportacionListados //protected void btnImprimirInforme_Click(object sender, EventArgs e) //{ // try // { // InformeDepartamento inf = new InformeDepartamento(); // Document doc = inf.genera(); // System.IO.MemoryStream ms = new System.IO.MemoryStream(); // //iTextSharp.text.Document doc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 30f, 30f, 30f, 30f); // //iTextSharp.text.pdf.PdfWriter writer = iTextSharp.text.pdf.PdfWriter.GetInstance(doc, ms); // //Response.Clear(); // //Response.ContentType = "application/pdf"; // //Response.AddHeader("Content-Disposition", // // "attachment;filename=\"Plan_de_Gobierno.pdf\""); // //Response.Cache.SetCacheability(HttpCacheability.NoCache); // //Response.BinaryWrite(ms.ToArray()); // //Response.Flush(); // //Response.End(); // using (PdfWriter writer = PdfWriter.GetInstance(doc, ms)) // { // /*doc.Open(); // document.Add(new Paragraph("Hello World")); // document.Close();*/ // writer.Close(); // ms.Close(); // Response.ContentType = "pdf/application"; // Response.AddHeader("content-disposition", "attachment;filename=First_PDF_document.pdf"); // Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); // } // } // catch (Exception ex) // { // //TODO************* // } //} protected void InformeExcel(int iDptoId) { try { System.IO.MemoryStream stream; //using (Entities c = new Entities()) { //DEPARTAMENTO dep = c.DEPARTAMENTO.Find(iDptoId); //DataTable tabla = Utils.ToDataTable<CONTENIDO>(dep.CONTENIDO.ToList()); stream = new System.IO.MemoryStream(); using (SpreadsheetDocument document = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook, true)) { WorkbookPart workbookPart = document.AddWorkbookPart(); workbookPart.Workbook = new Workbook(); WorksheetPart worksheetPart = workbookPart.AddNewPart <WorksheetPart>(); MergeCells mergeCells; var sheetData = InformesExcel.HojaExcelInforme(iDptoId, null, false, out mergeCells); //Añadimos ahora las columnas para poder asignarles el ancho personalizado: Columns columns = InformesExcel.SizesInformeDepartamento(sheetData); worksheetPart.Worksheet = new Worksheet(); worksheetPart.Worksheet.Append(columns); worksheetPart.Worksheet.Append(sheetData); Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets()); Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Plan de Gobierno - " + DateTime.Now.ToShortDateString().Replace("/", "-") }; //añadimos las celdas combinadas worksheetPart.Worksheet.InsertAfter(mergeCells, worksheetPart.Worksheet.Elements <SheetData>().First()); sheets.Append(sheet); //Añadimos la pestaña con cambios pendientes de validar MergeCells mergeCellsPV; SheetData sheetDataPV = InformesExcel.HojaExcelInforme(iDptoId, null, true, out mergeCellsPV); WorksheetPart worksheetPartPV = workbookPart.AddNewPart <WorksheetPart>(); Worksheet workSheetPV = new Worksheet(); //Añadimos ahora las columnas para poder asignarles el ancho personalizado: Columns columnsPV = InformesExcel.SizesInformeDepartamento(sheetDataPV); worksheetPartPV.Worksheet = new Worksheet(); worksheetPartPV.Worksheet.Append(columnsPV); worksheetPartPV.Worksheet.Append(sheetDataPV); Sheet sheetPV = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPartPV), SheetId = 2, Name = "P.G. (sin validar) - " + DateTime.Now.ToShortDateString().Replace("/", "-") }; //añadimos las celdas combinadas worksheetPartPV.Worksheet.InsertAfter(mergeCellsPV, worksheetPartPV.Worksheet.Elements <SheetData>().First()); sheets.Append(sheetPV); //fin pestaña de cambios pendientes de validar WorkbookStylesPart stylesPart = document.WorkbookPart.AddNewPart <WorkbookStylesPart>(); stylesPart.Stylesheet = InformesExcel.GenerateStyleSheet(); stylesPart.Stylesheet.Save(); worksheetPart.Worksheet.Save(); //fin nuevo workbookPart.Workbook.Save(); } } stream.Flush(); stream.Position = 0; Response.ClearContent(); Response.Clear(); Response.Buffer = true; Response.Charset = ""; Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache); Response.AddHeader("content-disposition", "attachment; filename=Plan_de_Gobierno_" + DateTime.Now.ToShortDateString().Replace("/", "-") + ".xlsx"); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; byte[] data1 = new byte[stream.Length]; stream.Read(data1, 0, data1.Length); stream.Close(); Response.BinaryWrite(data1); //Response.Flush(); // Feb2015: Needed to replace "Response.End();" with the following 3 lines, to make sure the Excel was fully written to the Response System.Web.HttpContext.Current.Response.Flush(); System.Web.HttpContext.Current.Response.SuppressContent = true; System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest(); //Response.End(); } catch (Exception ex) { logger.Error("Error al imprimir informe excel departamento (InformeExcel). Dpto: " + iDptoId + " Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex, "Error al imprimir informe excel departamento (InformeExcel). Dpto: " + iDptoId); ErrorMessage = "Error al crear el informe."; errorMessage.Visible = true; } }
/// <summary> /// Actualiza Objetivo /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnActualizaAcc_Click(object sender, EventArgs e) { if (ModelState.IsValid) { int iObjetivoId = Convert.ToInt32(this.hdObjetivoId.Value); using (Entities c = new Entities()) { try { ACCION obj = c.CONTENIDO.OfType <ACCION>().Where(o => o.CONTENIDO_ID == iObjetivoId).FirstOrDefault(); bool bHayCambios = false; if (String.IsNullOrEmpty(obj.INSTRUMENTOS_ACT_PDTE_VAL)) { bHayCambios = true; } else if ( obj.INSTRUMENTOS_ACT_PDTE_VAL.Trim() != this.txtInstrumentosAct.Text.Trim() || obj.SEGUIMIENTO_PDTE_VAL.Trim() != this.txtSeguimiento.Text.Trim() || obj.RECURSOS_HUMANOS_PDTE_VAL.Trim() != this.txtRecursosHumanos.Text.Trim() || obj.COSTE_ECONOMICO_PDTE_VAL.Trim() != this.txtCosteEconomico.Text.Trim() || obj.INDICADOR_SEGUIMIENTO_PDTE_VAL.Trim() != this.txtIndSeguimiento.Text.Trim() || obj.TEMPORALIDAD_PDTE_VAL.Trim() != this.txtTemporalidad.Text.Trim() || obj.INDICADOR_SEGUIMIENTO_PDTE_VAL.Trim() != this.txtIndSeguimiento.Text.Trim() || //obj.ESTADO_SEGUIMIENTO_ID_PDTE_VAL.ToString() != this.ddlEstadoSeguimiento.SelectedItem.Value || obj.PORCENTAJE_AVANCE_PDTE_VAL.ToString() != this.ddlPorcentajeAvance.SelectedItem.Value || obj.ORGANO_RESPONSABLE_PDTE_VAL.Trim() != this.txtOrganoResponsable.Text.Trim() ) { bHayCambios = true; } else if (!String.IsNullOrEmpty(obj.MEDIOS_OTROS_PDTE_VAL)) { if (obj.MEDIOS_OTROS_PDTE_VAL.Trim() != this.txtMediosOtros.Text.Trim()) { bHayCambios = true; } } else if (!String.IsNullOrEmpty(this.txtMediosOtros.Text.Trim())) { bHayCambios = true; } if (bHayCambios) { if (obj.YaPublicado()) { obj.FECHA_MODIFICACION = DateTime.Now; obj.AUTOR_MODIFICACION_USUARIO_ID = User.Identity.GetUserId().ToString(); obj.TIPO_CAMBIO_CONTENIDO_ID = TIPO_CAMBIO_CONTENIDO.MODIFICACION; } else { //Si todavía no ha sido publicado lo trataremos como un alta obj.FECHA_CREACION = DateTime.Now; obj.AUTOR_CREACION_USUARIO_ID = User.Identity.GetUserId().ToString(); obj.TIPO_CAMBIO_CONTENIDO_ID = TIPO_CAMBIO_CONTENIDO.ALTA; } obj.INSTRUMENTOS_ACT_PDTE_VAL = this.txtInstrumentosAct.Text.Trim(); obj.SEGUIMIENTO_PDTE_VAL = this.txtSeguimiento.Text.Trim(); obj.RECURSOS_HUMANOS_PDTE_VAL = this.txtRecursosHumanos.Text.Trim(); obj.COSTE_ECONOMICO_PDTE_VAL = this.txtCosteEconomico.Text.Trim(); obj.INDICADOR_SEGUIMIENTO_PDTE_VAL = this.txtIndSeguimiento.Text.Trim(); obj.MEDIOS_OTROS_PDTE_VAL = this.txtMediosOtros.Text.Trim(); obj.TEMPORALIDAD_PDTE_VAL = this.txtTemporalidad.Text.Trim(); obj.INDICADOR_SEGUIMIENTO_PDTE_VAL = this.txtIndSeguimiento.Text.Trim(); //if (this.ddlEstadoSeguimiento.SelectedItem.Value != "-1") // obj.ESTADO_SEGUIMIENTO_ID_PDTE_VAL = Convert.ToInt32(this.ddlEstadoSeguimiento.SelectedItem.Value); if (this.ddlPorcentajeAvance.SelectedItem.Value != "-1") { obj.PORCENTAJE_AVANCE_PDTE_VAL = Convert.ToByte(this.ddlPorcentajeAvance.SelectedItem.Value); } obj.ORGANO_RESPONSABLE_PDTE_VAL = this.txtOrganoResponsable.Text.Trim(); obj.OBSERVACIONES = this.txtAccObservaciones.Text.Trim(); obj.ESTADO_VALIDACION_ID = ESTADOS_VALIDACION.PDTE_VALIDAR; c.CONTENIDO.Attach(obj); c.Entry(obj).State = EntityState.Modified; c.SaveChanges(); SuccessMessage = "Instrumento/actividad actualizado correctamente."; successMessage.Visible = true; } else { //no marcamos como cambio si actualizan observaciones obj.OBSERVACIONES = this.txtAccObservaciones.Text.Trim(); c.CONTENIDO.Attach(obj); c.Entry(obj).State = EntityState.Modified; c.SaveChanges(); SuccessMessage = "Instrumento/actividad actualizado correctamente."; successMessage.Visible = true; } } catch (Exception ex) { logger.Fatal("Error al actualizar Instrumento/actividad (AdminPlan.aspx). Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); ErrorMessage = "Error al actualizar nuevo Instrumento/actividad."; errorMessage.Visible = true; } } } else { ErrorMessage = "Se deben rellenar los campos del formulario."; errorMessage.Visible = true; } }
/// <summary> /// Actualiza Objetivo /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnActualiza_Click(object sender, EventArgs e) { if (ModelState.IsValid) { if ((!String.IsNullOrEmpty(this.ObjetivoEstrategicoPV.Text))) { int iObjetivoId = Convert.ToInt32(this.hdObjetivoIdEdit.Value); using (Entities c = new Entities()) { try { OBJETIVO obj = c.CONTENIDO.OfType <OBJETIVO>().Where(o => o.CONTENIDO_ID == iObjetivoId).FirstOrDefault(); if (obj.YaPublicado()) { obj.FECHA_MODIFICACION = DateTime.Now; obj.AUTOR_MODIFICACION_USUARIO_ID = User.Identity.GetUserId().ToString(); obj.TIPO_CAMBIO_CONTENIDO_ID = TIPO_CAMBIO_CONTENIDO.MODIFICACION; } else { //Si todavía no ha sido publicado lo trataremos como un alta obj.FECHA_CREACION = DateTime.Now; obj.AUTOR_CREACION_USUARIO_ID = User.Identity.GetUserId().ToString(); obj.TIPO_CAMBIO_CONTENIDO_ID = TIPO_CAMBIO_CONTENIDO.ALTA; } //Si hay cambios guardamos si no no, para no marcar como modificado bool bHayCambios = false; if (String.IsNullOrEmpty(obj.OBJETIVO_ESTRATEGICO_PDTE_VAL)) { bHayCambios = true; } else if (obj.OBJETIVO_ESTRATEGICO_PDTE_VAL.Trim() != this.ObjetivoEstrategicoPV.Text.Trim()) { bHayCambios = true; } if (bHayCambios) { obj.OBJETIVO_ESTRATEGICO_PDTE_VAL = this.ObjetivoEstrategicoPV.Text.Trim(); obj.ESTADO_VALIDACION_ID = ESTADOS_VALIDACION.PDTE_VALIDAR; c.CONTENIDO.Attach(obj); c.Entry(obj).State = EntityState.Modified; c.SaveChanges(); SuccessMessage = "Objetivo actualizado correctamente."; successMessage.Visible = true; } } catch (Exception ex) { logger.Fatal("Error al actualizar objetivo (AdminPlan.aspx). Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); ErrorMessage = "Error al actualizar nuevo objetivo."; errorMessage.Visible = true; } } } else { ErrorMessage = "Se deben rellenar los campos del formulario."; errorMessage.Visible = true; } } else { ErrorMessage = "Se deben rellenar los campos del formulario."; errorMessage.Visible = true; } }
protected void btnAddAcc_Click(object sender, EventArgs e) { if (ModelState.IsValid) { if ((!String.IsNullOrEmpty(this.txtInstrumentosAct.Text)) && (!String.IsNullOrEmpty(this.txtOrganoResponsable.Text)) && (!String.IsNullOrEmpty(this.txtSeguimiento.Text)) && (!String.IsNullOrEmpty(this.txtRecursosHumanos.Text)) && (!String.IsNullOrEmpty(this.txtCosteEconomico.Text)) && (!String.IsNullOrEmpty(this.txtTemporalidad.Text)) && (!String.IsNullOrEmpty(this.txtIndSeguimiento.Text)) && (this.ddlPorcentajeAvance.SelectedItem.Value != "-1")) //(this.ddlEstadoSeguimiento.SelectedItem.Value != "-1")) { int iDeptoId = getDptoId(); using (Entities c = new Entities()) { try { ACCION obj = new ACCION { AUTOR_CREACION_USUARIO_ID = User.Identity.GetUserId().ToString(), DEPARTAMENTO_ID = iDeptoId, ESTADO_VALIDACION_ID = ESTADOS_VALIDACION.PDTE_VALIDAR, FECHA_CREACION = DateTime.Now, TIPO_CAMBIO_CONTENIDO_ID = TIPO_CAMBIO_CONTENIDO.ALTA, VISIBLE = false, SEGUIMIENTO_PDTE_VAL = txtSeguimiento.Text.Trim(), RECURSOS_HUMANOS_PDTE_VAL = txtRecursosHumanos.Text.Trim(), COSTE_ECONOMICO_PDTE_VAL = txtCosteEconomico.Text.Trim(), INSTRUMENTOS_ACT_PDTE_VAL = txtInstrumentosAct.Text.Trim(), MEDIOS_OTROS_PDTE_VAL = txtMediosOtros.Text.Trim(), TEMPORALIDAD_PDTE_VAL = txtTemporalidad.Text.Trim(), INDICADOR_SEGUIMIENTO_PDTE_VAL = txtIndSeguimiento.Text.Trim(), //ESTADO_SEGUIMIENTO_ID_PDTE_VAL = Convert.ToInt32(this.ddlEstadoSeguimiento.SelectedItem.Value), PORCENTAJE_AVANCE_PDTE_VAL = Convert.ToByte(this.ddlPorcentajeAvance.SelectedItem.Value), ORGANO_RESPONSABLE_PDTE_VAL = txtOrganoResponsable.Text.Trim(), OBJETIVO_CONTENIDO_ID = Convert.ToInt32(this.hdObjetivoId.Value), OBSERVACIONES = txtAccObservaciones.Text.Trim() }; c.CONTENIDO.Add(obj); c.SaveChanges(); SuccessMessage = "Instrumento/actividad guardado correctamente."; successMessage.Visible = true; } catch (Exception ex) { logger.Error("Error al crear nuevo instrumento/actividad (AdminPlan.aspx). Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); ErrorMessage = "Error al crear nueva acción."; errorMessage.Visible = true; } } } else { ErrorMessage = "Se deben rellenar los campos del formulario."; errorMessage.Visible = true; } } else { ErrorMessage = "Se deben rellenar los campos del formulario."; errorMessage.Visible = true; } }
protected void Page_Load() { if (Request["id"] == null) { Response.Redirect("AdminPlan.aspx?id=" + getDptoId().ToString(), true); } if (!IsPostBack) { int?iDptoId = null; iDptoId = getDptoId(); //Comprobamos lo primero de todo que la entidad a administrar es la del usuario o es un administrador try { if (!User.IsInRole(AspNetRoles.ADMINISTRADOR) && !User.IsInRole(AspNetRoles.VALIDADOR)) { if (Request["id"] != null) { if (iDptoId != Convert.ToInt32(Request["id"])) { //No autorizado logger.Info("No autorizado en AdminPlan.aspx. Usuario: " + User.Identity.GetUserId() + " Departamento: " + Request["id"]); Response.Redirect("../Default.aspx", true); } } } } catch (Exception ex) { logger.Warn("Error en AdminPlan.aspx (2). Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); Response.Redirect("../Default.aspx", true); } using (Entities c = new Entities()) { DEPARTAMENTO dep = c.DEPARTAMENTO.Find(iDptoId); if (dep != null) { LEGISLATURA leg = c.LEGISLATURA.Find(dep.LEGISLATURA_ID); if (!dep.VISIBLE) { if (!User.IsInRole(AspNetRoles.ADMINISTRADOR) && !User.IsInRole(AspNetRoles.VALIDADOR)) { ////No se puede editar un departamento no visible //logger.Info("Editando un departamento no visible. Usuario: " + User.Identity.GetUserId() + " Departamento: " + iDptoId); //Response.Redirect("../Default.aspx", true); } } else if (!leg.ACTUAL) { //if (!User.IsInRole(AspNetRoles.ADMINISTRADOR)) //{ // logger.Info("Editando un departamento de una legislatura no actual. Usuario: " + User.Identity.GetUserId() + " Departamento: " + iDptoId); // Response.Redirect("../Default.aspx", true); //} } //List<ESTADOS_SEGUIMIENTO> tipos = c.ESTADOS_SEGUIMIENTO.ToList(); //tipos.Add(new ESTADOS_SEGUIMIENTO() { ESTADO_SEGUIMIENTO_ID = -1, DESCRIPCION = "Seleccione..." }); //this.ddlEstadoSeguimiento.DataTextField = "DESCRIPCION"; //this.ddlEstadoSeguimiento.DataValueField = "ESTADO_SEGUIMIENTO_ID"; //this.ddlEstadoSeguimiento.DataSource = tipos; //this.ddlEstadoSeguimiento.DataBind(); //this.ddlEstadoSeguimiento.ClearSelection(); //this.ddlEstadoSeguimiento.Items.FindByText("Seleccione...").Selected = true; this.litLegislatura.Text = leg.DESCRIPCION; this.litNombredDEP.Text = dep.DESCRIPCION; this.Title = dep.DESCRIPCION; } else { logger.Info("El departamento no existe (Planes/AdminPlan.aspx)."); Response.Redirect("../Default.aspx", true); } } if (!String.IsNullOrEmpty(Request["e"])) { ErrorMessage = Request["e"]; errorMessage.Visible = true; } else if (!String.IsNullOrEmpty(Request["m"])) { SuccessMessage = Request["m"]; successMessage.Visible = true; } else { ErrorMessage = ""; errorMessage.Visible = false; SuccessMessage = ""; successMessage.Visible = false; } } }
protected void LogIn(object sender, EventArgs e) { if (IsValid) { // Validar la contraseña del usuario var manager = Context.GetOwinContext().GetUserManager <ApplicationUserManager>(); var signinManager = Context.GetOwinContext().GetUserManager <ApplicationSignInManager>(); try { ApplicationUser au = manager.FindByEmail(Email.Text); if (au != null) { //var userid = manager.FindByEmail(Email.Text).Id; var userid = au.Id; // Esto no cuenta los errores de inicio de sesión hacia el bloqueo de cuenta // Para habilitar los errores de contraseña para desencadenar el bloqueo, cambie a shouldLockout: true //var result = signinManager.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout: true); //descomentar para usar autenticación por BBDD string[] login = Email.Text.Split('@'); var result = verificaLdap(login[0], Password.Text, login[1]); //Comprobamos si es administrador o no bool admin = manager.GetRoles(userid).Contains("Administrador"); bool sSinDepartamento = false; //Si no es admin comprobamos que el usuario tenga departamento, si no lo tiene no podrá entrar en la aplicación (estaría "eliminado") if (!admin) { using (Entities c = new Entities()) { try { USUARIOS u = c.USUARIOS.Find(userid); if (!u.DEPARTAMENTOID.HasValue) { result = SignInStatus.Failure; sSinDepartamento = true; logger.Info("Usuario sin departamento asociado: " + userid); } } catch (Exception ex) { logger.Warn("Error en AdminPlan.aspx. Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); Response.Redirect("../Default.aspx", true); } } } switch (result) { case SignInStatus.Success: USUARIOS.setUltimoAcceso(userid); signinManager.SignIn(au, false, RememberMe.Checked); IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response, admin); break; case SignInStatus.LockedOut: Response.Redirect("/Account/Lockout"); break; case SignInStatus.RequiresVerification: Response.Redirect(String.Format("/Account/TwoFactorAuthenticationSignIn?ReturnUrl={0}&RememberMe={1}", Request.QueryString["ReturnUrl"], RememberMe.Checked), true); break; case SignInStatus.Failure: default: if (!sSinDepartamento) { FailureText.Text = "Intento de inicio de sesión no válido"; } else { FailureText.Text = "Usuario sin departamento asociado"; } ErrorMessage.Visible = true; break; } } else { //No existe el usuario FailureText.Text = "Usuario y/o contraseña no válidos"; ErrorMessage.Visible = true; } } catch (Exception ex) { FailureText.Text = "Usuario y/o contraseña no válidos."; ErrorMessage.Visible = true; logger.Fatal("Error en Login.aspx. Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); } } }
protected void btnAddUserDep_Click(object sender, EventArgs e) { if (ModelState.IsValid) { if (this.txtCorreoUsuarioDep.Text.ToLower().EndsWith("aragon.es")) { var manager = Context.GetOwinContext().GetUserManager <ApplicationUserManager>(); var signInManager = Context.GetOwinContext().Get <ApplicationSignInManager>(); ApplicationUser user = null; USUARIOS usuario = null; //Comprobamos si existe el usuario sin departamento asociado: user = manager.FindByEmail(this.txtCorreoUsuarioDep.Text.Trim().ToLower()); if (user != null) {//Existe el usuario de la aplicación //Comprobamos si es administrador o no bool admin = manager.GetRoles(user.Id).Contains("Administrador"); if (!admin) { //Comprobamos si existe el usuario en la tabla USUARIOS: using (Entities c = new Entities()) { usuario = c.USUARIOS.Find(user.Id); if (usuario != null) { //Existe el usuario, simplemente le cambiamos el departamento asociado usuario.NOMBRE = this.txtNombreUsuarioDep.Text.Trim(); usuario.DEPARTAMENTOID = Convert.ToInt32(Request["id"]); usuario.APELLIDOS = this.txtApellidosUsuarioDep.Text.Trim(); c.USUARIOS.Attach(usuario); c.Entry(usuario).State = EntityState.Modified; c.SaveChanges(); SuccessMessage = "El usuario existente se ha vinculado al departamento correctamente."; successMessage.Visible = true; logger.Info("Actualizado usuario: " + user.Id + " dpto: " + Convert.ToInt32(Request["id"])); } else { //No existe el usuario de la aplicación, lo creamos USUARIOS u = new USUARIOS { NOMBRE = this.txtNombreUsuarioDep.Text.Trim(), APELLIDOS = this.txtApellidosUsuarioDep.Text.Trim(), DEPARTAMENTOID = Convert.ToInt32(Request["id"]), FECHA_ALTA = DateTime.Now, AspNetUsers = c.AspNetUsers.Find(user.Id) }; c.USUARIOS.Add(u); c.SaveChanges(); SuccessMessage = "Nuevo usuario creado correctamente"; successMessage.Visible = true; errorMessage.Visible = false; LimpiaUsuarioDep(); logger.Info("Añadido usuario: " + user.Id + " dpto: " + Convert.ToInt32(Request["id"])); } } } else { ErrorMessage = "Error al crear un nuevo usuario: no se puede añadir ya que es un usuario administrador existente."; errorMessage.Visible = true; } } else { //No existe ni usuario de aplicación ni info en USUARIOS, creamos AppUser y USUARIO user = new ApplicationUser() { UserName = this.txtCorreoUsuarioDep.Text.Trim().ToLower(), Email = this.txtCorreoUsuarioDep.Text.Trim(), EmailConfirmed = true }; IdentityResult result = null; try { result = manager.Create(user); if (result.Succeeded) { result = manager.AddToRole(user.Id, "Editor"); using (Entities c = new Entities()) { USUARIOS u = new USUARIOS { NOMBRE = this.txtNombreUsuarioDep.Text.Trim(), APELLIDOS = this.txtApellidosUsuarioDep.Text.Trim(), DEPARTAMENTOID = Convert.ToInt32(Request["id"]), FECHA_ALTA = DateTime.Now, AspNetUsers = c.AspNetUsers.Find(user.Id) }; c.USUARIOS.Add(u); c.SaveChanges(); SuccessMessage = "Nuevo usuario creado correctamente"; successMessage.Visible = true; errorMessage.Visible = false; LimpiaUsuarioDep(); logger.Info("Añadido usuario: " + user.Id + " dpto: " + Convert.ToInt32(Request["id"])); } } else { ErrorMessage = "Error al crear un nuevo usuario: " + result.Errors.FirstOrDefault(); errorMessage.Visible = true; } } catch (Exception ex) { ErrorMessage = "Error al crear un nuevo usuario: " + ex.Message + " " + ex.InnerException; errorMessage.Visible = true; logger.Error("Error al crear un nuevo usuario. Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex); } } } else { ErrorMessage = "Sólo se permiten cuentas de correo electrónico corporativas (*@aragon.es)"; errorMessage.Visible = true; } } else { ErrorMessage = "Se deben rellenar los campos del formulario."; errorMessage.Visible = true; } }
protected void Page_Load(object sender, EventArgs e) { HttpContext ctx = HttpContext.Current; ctx.Response.ContentType = "application/json"; if (!String.IsNullOrEmpty(Request["op"])) { string sOperacion = Request["op"].ToString(); string sEcho = ""; int? displayLength = null; int? displayStart = null; int? sortCol = null; string sortOrder = null; if (!String.IsNullOrEmpty(Request["sEcho"])) { sEcho = HttpContext.Current.Request.Params["sEcho"]; } if (!String.IsNullOrEmpty(Request["iDisplayLength"])) { displayLength = int.Parse(HttpContext.Current.Request.Params["iDisplayLength"]); } if (!String.IsNullOrEmpty(Request["iDisplayStart"])) { displayStart = int.Parse(HttpContext.Current.Request.Params["iDisplayStart"]); } if (!String.IsNullOrEmpty(Request["sSortDir_0"])) { sortOrder = HttpContext.Current.Request.Params["sSortDir_0"]; } if (!String.IsNullOrEmpty(Request["iSortCol_0"])) { sortCol = int.Parse(HttpContext.Current.Request.Params["iSortCol_0"]); } if (sOperacion == "O") { //Carga de Objetivo y sus Acciones if (Request["id"] != null) { using (Entities c = new Entities()) { int iDeptId; try { iDeptId = Convert.ToInt32(Request["id"]); DEPARTAMENTO d = c.DEPARTAMENTO.Find(Convert.ToInt32(Request["id"])); LEGISLATURA l = c.LEGISLATURA.Find(d.LEGISLATURA_ID); if (d.VISIBLE && l.ACTUAL) { c.Configuration.ProxyCreationEnabled = false; var results = c.CONTENIDO.Include("ACCION").OfType <OBJETIVO>().Where(st => st.DEPARTAMENTO_ID == iDeptId && st.VISIBLE == true && st.OBJETIVO_ESTRATEGICO != null).ToList(); //Para poder listar por Json sin necesidad de personalizarlo /*Response.Write(JsonConvert.SerializeObject(results, Formatting.Indented, * new JsonSerializerSettings * { * ReferenceLoopHandling = ReferenceLoopHandling.Ignore * }, ObjSerializer));*/ Response.Write(JsonConvert.SerializeObject(results, Formatting.Indented, new JsonConverter[] { new ObjSerializer() })); /* //Así con json personalizado * List<OBJETIVO> list = new List<OBJETIVO>(); * list = c.CONTENIDO.OfType<OBJETIVO>().Where(st => st.DEPARTAMENTO_ID == iDptoId.Value).ToList(); * * //Response.Write("{ \"data\":"); * Response.Write(Json.GetJson(list) ); * //Response.Write("}");*/ } } catch (Exception ex) { logger.Error("View/json_data.aspx.cs (op=O). Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex, "View/json_data.aspx.cs (op=O). Error: " + ex.Message + " " + ex.InnerException); } } } } else if (sOperacion == "dG") { //Datos Generales: num objetivos, num acciones, fecha de última actualización using (Entities c = new Entities()) { using (var conn = c.Database.Connection) { try { int iAcciones = 0; int iObjetivos = 0; List <DateTime> dtFechas = new List <DateTime>(); /* Response.Write("[{\"objetivos\": XXX, \"acciones\":XXX, \"ultima_mod\":\"XXX\"}]");*/ var cmd = conn.CreateCommand(); conn.Open(); cmd.CommandText = @"select COUNT(A.CONTENIDO_ID) as acciones, max(fecha_modificacion) as ultimo_modificado, max (fecha_creacion) as ultimo_creado from PLGO_OWN.accion a inner join PLGO_OWN.CONTENIDO c on c.contenido_id = A.CONTENIDO_ID inner join PLGO_OWN.DEPARTAMENTO d on C.DEPARTAMENTO_ID = D.DEPARTAMENTO_ID inner join PLGO_OWN.LEGISLATURA l on L.LEGISLATURA_ID = D.LEGISLATURA_ID WHERE l.actual = 1 and d.visible = 1 and c.visible = 1 and C.TIPO_CAMBIO_CONTENIDO_ID <> 1 "; using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) { while (reader.Read()) { iAcciones = reader.GetInt32(0); dtFechas.Add(reader.GetDateTime(1)); dtFechas.Add(reader.GetDateTime(2)); } } cmd.CommandText = @"select COUNT(A.CONTENIDO_ID) as objetivos, max(fecha_modificacion) as ultimo_modificado, max (fecha_creacion) as ultimo_creado from PLGO_OWN.OBJETIVO a inner join PLGO_OWN.CONTENIDO c on c.contenido_id = A.CONTENIDO_ID inner join PLGO_OWN.DEPARTAMENTO d on C.DEPARTAMENTO_ID = D.DEPARTAMENTO_ID inner join PLGO_OWN.LEGISLATURA l on L.LEGISLATURA_ID = D.LEGISLATURA_ID WHERE l.actual = 1 and d.visible = 1 and c.visible = 1 and C.TIPO_CAMBIO_CONTENIDO_ID <> 1 "; using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) { while (reader.Read()) { iObjetivos = reader.GetInt32(0); dtFechas.Add(reader.GetDateTime(1)); dtFechas.Add(reader.GetDateTime(2)); } } Response.Write("[{\"objetivos\":" + iObjetivos + ",\"acciones\":" + iAcciones + ",\"ultima_mod\":\"" + dtFechas.OrderByDescending(x => x).First() + "\"}]"); } catch (Exception ex) { logger.Error("View/json_data.aspx.cs (op=dG). Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex, "View/json_data.aspx.cs (op=dG). Error: " + ex.Message + " " + ex.InnerException); } } } } //Detalle Departamento else if (sOperacion == "dD") { if (Request["id"] != null) { try { using (Entities c = new Entities()) { if (Request["id"] == null) { Response.Redirect("VerDepartamentos.aspx", false); } else { DEPARTAMENTO d = c.DEPARTAMENTO.Find(Convert.ToInt32(Request["id"])); if (d.VISIBLE) { Response.Write("{\"desc\":\"" + d.DESCRIPCION + "\"}"); } } } } catch (Exception ex) { logger.Error("View/json_data.aspx.cs (op=dD) ID= " + Request["id"] + ". Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex, "View/json_data.aspx.cs (op=dD) ID= " + Request["id"] + ". Error: " + ex.Message + " " + ex.InnerException); } } } //Cuadro de mando else if (sOperacion == "cm") { /* Response.Write("{\"pLegT\": XXX, \"pObjM\":XXX, \"pObjNI\":\"XXX\", \"pObjI\":\"XXX\", \"pObjT\":\"XXX\"}");*/ decimal dLegTranscurrida; int iObjetivosSinIniciar = 0; int iObjetivosIniciados = 0; int iObjetivosTerminados = 0; int iNumAcciones = 0; int iNumObjetivos = 0; int iSumaPorcenajesAvanceAcciones = 0; decimal dPorcSinIniciar = 0; decimal dPorcIniciados = 0; decimal dPorcTerminados = 0; decimal dPorcIndiceGlobalCumplimiento = 0; LEGISLATURA.GetDatosCuadroMando(out dLegTranscurrida, out iObjetivosSinIniciar, out iObjetivosIniciados, out iObjetivosTerminados, out iSumaPorcenajesAvanceAcciones, out iNumAcciones, out iNumObjetivos, out dPorcSinIniciar, out dPorcIniciados, out dPorcTerminados, out dPorcIndiceGlobalCumplimiento); dPorcTerminados = 100 - dPorcSinIniciar - dPorcIniciados; //nos aseguramos que la suma no sea mayor que 100% Response.Write("{\"pLegT\": " + dLegTranscurrida + ", \"pObjM\": " + dPorcIndiceGlobalCumplimiento + ", \"pObjNI\":" + dPorcSinIniciar + ", \"pObjI\":" + dPorcIniciados + ", \"pObjT\":" + dPorcTerminados + "}"); } //Cuadro de mando por departamento else if (sOperacion == "cmd") { if (Request["id"] != null) { try { using (Entities c = new Entities()) { if (Request["id"] == null) { Response.Redirect("VerDepartamentos.aspx", false); } else { DEPARTAMENTO d = c.DEPARTAMENTO.Find(Convert.ToInt32(Request["id"])); LEGISLATURA l = c.LEGISLATURA.Find(d.LEGISLATURA_ID); if (d.VISIBLE && l.ACTUAL) { //Response.Write("{\"desc\":\"" + d.DESCRIPCION + "\"}"); decimal dLegTranscurrida = LEGISLATURA.GetTiempoLegislatura(); decimal dPorcIndiceGlobalCumplimiento = d.GetEvolucion(); string sFecha = ""; using (var conn = c.Database.Connection) { var cmd = conn.CreateCommand(); conn.Open(); cmd.CommandText = @"select max(fecha_modificacion) as ultimo_modificado from PLGO_OWN.accion a inner join PLGO_OWN.CONTENIDO c on c.contenido_id = A.CONTENIDO_ID inner join PLGO_OWN.DEPARTAMENTO d on C.DEPARTAMENTO_ID = D.DEPARTAMENTO_ID inner join PLGO_OWN.LEGISLATURA l on L.LEGISLATURA_ID = D.LEGISLATURA_ID WHERE l.actual = 1 and d.visible = 1 and d.DEPARTAMENTO_ID = :DptoId and c.visible = 1 and C.TIPO_CAMBIO_CONTENIDO_ID <> 1 "; var parameter = cmd.CreateParameter(); parameter.ParameterName = ":DptoId"; parameter.Value = d.DEPARTAMENTO_ID; cmd.Parameters.Add(parameter); using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) { while (reader.Read()) { try { sFecha = reader.GetDateTime(0).ToShortDateString(); } catch { sFecha = "No disponible"; } } } } Response.Write("{\"desc\":\"" + d.DESCRIPCION + "\", \"pLegT\": " + dLegTranscurrida + ", \"pObjM\": " + dPorcIndiceGlobalCumplimiento + ", \"um\":\"" + sFecha + "\"}"); } } } } catch (Exception ex) { logger.Error("View/json_data.aspx.cs (op=dD) ID= " + Request["id"] + ". Error: " + ex.Message + " " + ex.InnerException); Notificaciones.NotifySystemOps(ex, "View/json_data.aspx.cs (op=dD) ID= " + Request["id"] + ". Error: " + ex.Message + " " + ex.InnerException); } } } } }