public ResultadoOperacionDto RegistrarConsultaAnalisis(ConsultaAnalisisDto consultaAnalisisDto) { var resultado = new ResultadoOperacionDto(); try { if (consultaAnalisisDto.IdConsultaAnalisis > 0) { var registoConsultaBD = ConsultaAnalisisRepository.GetById(consultaAnalisisDto.IdConsultaAnalisis); ConsultaAnalisisRepository.DbContext.ConsultaAnalisisEntidad.RemoveRange(registoConsultaBD.ConsultaAnalisisEntidad); ConsultaAnalisisRepository.DbContext.ConsultaAnalisisConcepto.RemoveRange(registoConsultaBD.ConsultaAnalisisConcepto); ConsultaAnalisisRepository.DbContext.ConsultaAnalisisPeriodo.RemoveRange(registoConsultaBD.ConsultaAnalisisPeriodo); registoConsultaBD.Nombre = consultaAnalisisDto.Nombre; ConsultaAnalisisRepository.DbContext.ConsultaAnalisisConcepto.AddRange(GenerarConsultaAnalisisConcepto(consultaAnalisisDto.ConsultaAnalisisConcepto, consultaAnalisisDto.IdConsultaAnalisis)); ConsultaAnalisisRepository.DbContext.ConsultaAnalisisEntidad.AddRange(GenerarConsultaAnalisisEntidad(consultaAnalisisDto.ConsultaAnalisisEntidad, consultaAnalisisDto.IdConsultaAnalisis)); ConsultaAnalisisRepository.DbContext.ConsultaAnalisisPeriodo.AddRange(GenerarConsultaAnalisisPeriodo(consultaAnalisisDto.ConsultaAnalisisPeriodo, consultaAnalisisDto.IdConsultaAnalisis)); ConsultaAnalisisRepository.Update(registoConsultaBD); resultado.InformacionExtra = registoConsultaBD.IdConsultaAnalisis; } else { var consultaAnalisis = new ConsultaAnalisis(); consultaAnalisis.Nombre = consultaAnalisisDto.Nombre; consultaAnalisis.ConsultaAnalisisConcepto = GenerarConsultaAnalisisConcepto(consultaAnalisisDto.ConsultaAnalisisConcepto, consultaAnalisisDto.IdConsultaAnalisis); consultaAnalisis.ConsultaAnalisisEntidad = GenerarConsultaAnalisisEntidad(consultaAnalisisDto.ConsultaAnalisisEntidad, consultaAnalisisDto.IdConsultaAnalisis); consultaAnalisis.ConsultaAnalisisPeriodo = GenerarConsultaAnalisisPeriodo(consultaAnalisisDto.ConsultaAnalisisPeriodo, consultaAnalisisDto.IdConsultaAnalisis); ConsultaAnalisisRepository.Add(consultaAnalisis); ConsultaAnalisisRepository.Commit(); resultado.InformacionExtra = consultaAnalisis.IdConsultaAnalisis; } resultado.Resultado = true; } catch (Exception exception) { resultado.Resultado = false; resultado.Mensaje = exception.Message; resultado.InformacionExtra = exception; } return(resultado); }
/// <summary> /// Copia el elemento evitando las referencias a objetos que proboquen redundancia ciclica cuando se serializan a JSON. /// </summary> /// <param name="o">Elemento a copiar.</param> /// <returns>Copia del elemento.</returns> public ConsultaAnalisisDto Copia(ConsultaAnalisis o) { if (o == null) { return(null); } var consultaAnalisisDto = new ConsultaAnalisisDto() { IdConsultaAnalisis = o.IdConsultaAnalisis, Nombre = o.Nombre, }; consultaAnalisisDto.ConsultaAnalisisConcepto = Copia(o.ConsultaAnalisisConcepto); consultaAnalisisDto.ConsultaAnalisisEntidad = Copia(o.ConsultaAnalisisEntidad); consultaAnalisisDto.ConsultaAnalisisPeriodo = Copia(o.ConsultaAnalisisPeriodo); return(consultaAnalisisDto); }
public List <DocumentoInstancia> ObtenerDocumentosInstanciaPorConsulta(ConsultaAnalisisDto consultaAnalisis) { List <long> entidadesId = new List <long>(); string queryDocumentosInstancia = @" select * from DocumentoInstancia where IdDocumentoInstancia in("; queryDocumentosInstancia += " select DISTINCT first_value(\"IdDocumentoInstancia\") OVER (PARTITION BY \"ClaveEmisora\",\"Anio\",\"Trimestre\" ORDER BY \"FechaUltMod\" DESC) "; queryDocumentosInstancia += " from DocumentoInstancia doc where ClaveEmisora IN ("; foreach (var entidad in consultaAnalisis.ConsultaAnalisisEntidad) { queryDocumentosInstancia = queryDocumentosInstancia + "'" + entidad.NombreEntidad + "',"; } queryDocumentosInstancia = queryDocumentosInstancia.Substring(0, queryDocumentosInstancia.Length - 1); queryDocumentosInstancia = queryDocumentosInstancia + ") AND "; foreach (var periodo in consultaAnalisis.ConsultaAnalisisPeriodo) { queryDocumentosInstancia = queryDocumentosInstancia + " ( Anio =" + periodo.Anio; queryDocumentosInstancia = queryDocumentosInstancia + " AND Trimestre=" + periodo.Trimestre + ") OR"; } queryDocumentosInstancia = queryDocumentosInstancia.Substring(0, queryDocumentosInstancia.Length - 2); queryDocumentosInstancia = queryDocumentosInstancia + " ) AND ClaveEmisora IN ("; foreach (var entidad in consultaAnalisis.ConsultaAnalisisEntidad) { queryDocumentosInstancia = queryDocumentosInstancia + "'" + entidad.NombreEntidad + "',"; } queryDocumentosInstancia = queryDocumentosInstancia.Substring(0, queryDocumentosInstancia.Length - 1); queryDocumentosInstancia = queryDocumentosInstancia + " )"; var queryResult = DbContext.Database.SqlQuery <DocumentoInstancia>(queryDocumentosInstancia).ToList(); return(queryResult); }
public Dictionary <string, object> ObtenerInformacionConsultaDocumentos(ConsultaAnalisisDto consiguracionConsulta, List <DocumentoInstanciaXbrlDto> informacionVersionDocumentos, TaxonomiaDto taxonomiaDto) { var informacionConsultaDocumentos = new Dictionary <string, object>(); var documentoInstanciaDocumento = unirDocumentosInstancia(informacionVersionDocumentos); if (documentoInstanciaDocumento != null) { documentoInstanciaDocumento.Taxonomia = taxonomiaDto; informacionConsultaDocumentos.Add("DocumentoInstancia", documentoInstanciaDocumento); foreach (var rolTaxonomia in consiguracionConsulta.ConsultaAnalisisRolTaxonomia) { var informacionRolTaxonomia = new Dictionary <string, object>(); var estructuraDocumento = new Dictionary <string, object>(); informacionRolTaxonomia.Add("NombreRol", rolTaxonomia.DescripcionRol); informacionRolTaxonomia.Add("Uri", rolTaxonomia.Uri); foreach (var rolPresentacion in taxonomiaDto.RolesPresentacion) { if (rolPresentacion.Uri.Equals(rolTaxonomia.Uri)) { int indentacion = 1; recorrerArbolLinkbasePresentacion(rolPresentacion.Estructuras, estructuraDocumento, indentacion, taxonomiaDto); informacionRolTaxonomia.Add("Conceptos", estructuraDocumento); } } informacionConsultaDocumentos.Add(rolTaxonomia.Uri, informacionRolTaxonomia); } } return(informacionConsultaDocumentos); }
/// <summary> /// Realiza un export a formato excel para la consulta configurada /// </summary> /// <param name="view">Vista en presentacion que sera presentada la consulta</param> /// <param name="consultaAnalisisDto">Informacion de la consulta de configuracion base</param> /// <param name="filename">Nombre del archivo donde será mostrada la consulta</param> /// <param name="hechos">Listado de hechos de la consulta de informacion</param> /// <param name="contextos">Listado de contextos a mostrar</param> /// <returns>Resultado de la acción</returns> private IHttpActionResult ExportDataToExcel(String view, ConsultaAnalisisDto consultaAnalisisDto, String filename, Dictionary <long, Dictionary <long, Dictionary <string, AbaxXBRLCore.Viewer.Application.Dto.HechoDto> > > hechos, Dictionary <long, List <AbaxXBRLCore.Common.Dtos.ContextoDto> > contextos) { //var gv = new GridView (); Table dt = new Table(); TableRow headerRow = new TableRow(); TableHeaderCell oTableCell = new TableHeaderCell(); oTableCell.Text = "Concepto"; oTableCell.ColumnSpan = 1; headerRow.Cells.Add(oTableCell); foreach (var idEmpresa in contextos.Keys) { var NombreEntidad = ""; foreach (var entidad in consultaAnalisisDto.ConsultaAnalisisEntidad) { if (entidad.IdEmpresa == idEmpresa) { NombreEntidad = entidad.NombreEntidad; break; } } oTableCell = new TableHeaderCell(); oTableCell.Text = NombreEntidad; oTableCell.ColumnSpan = contextos[idEmpresa].Count; headerRow.Cells.Add(oTableCell); } dt.Rows.AddAt(0, headerRow); //Se agregan los contextos TableRow rowContextos = new TableRow(); TableCell tableCell = new TableCell(); tableCell.ColumnSpan = 1; tableCell.Text = ""; rowContextos.Cells.Add(tableCell); foreach (var idEmpresa in contextos.Keys) { foreach (var contexto in contextos[idEmpresa]) { tableCell = new TableCell(); if (contexto.Fecha != null) { tableCell.Text = contexto.Fecha.Value.ToString("dd/MMM/yyyy"); } else { tableCell.Text = contexto.FechaInicio.Value.ToString("dd/MMM/yyyy") + " AL " + contexto.FechaFin.Value.ToString("dd/MMM/yyyy"); } tableCell.ColumnSpan = 1; rowContextos.Cells.Add(tableCell); } } dt.Rows.AddAt(1, rowContextos); //Se agregan los hechos var indiceColumna = 2; foreach (var concepto in consultaAnalisisDto.ConsultaAnalisisConcepto) { TableRow rowHechosConcepto = new TableRow(); tableCell = new TableCell(); tableCell.ColumnSpan = 1; tableCell.Text = concepto.DescripcionConcepto; rowHechosConcepto.Cells.Add(tableCell); foreach (var idEmpresa in contextos.Keys) { foreach (var contexto in contextos[idEmpresa]) { tableCell = new TableCell(); if (hechos.ContainsKey(idEmpresa) && hechos[idEmpresa].ContainsKey(long.Parse(contexto.Id)) && hechos[idEmpresa][long.Parse(contexto.Id)].ContainsKey(concepto.IdConcepto)) { var hecho = hechos[idEmpresa][long.Parse(contexto.Id)][concepto.IdConcepto]; tableCell.Text = hecho.Valor; } tableCell.ColumnSpan = 1; rowHechosConcepto.Cells.Add(tableCell); } } dt.Rows.AddAt(indiceColumna++, rowHechosConcepto); } dt.DataBind(); var sw = new StringWriter(); var htw = new HtmlTextWriter(sw); dt.RenderControl(htw); byte[] byteArray = Encoding.ASCII.GetBytes(sw.ToString()); MemoryStream s = new MemoryStream(byteArray); var response = new HttpResponseMessage(); response.StatusCode = HttpStatusCode.OK; response.Content = new StreamContent(s); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); response.Content.Headers.ContentDisposition.FileName = filename; response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel"); return(ResponseMessage(response)); }
/// <summary> /// Realiza un export a formato excel para la consulta configurada /// </summary> /// <param name="view">Vista en presentacion que sera presentada la consulta</param> /// <param name="estructuraDocumento">Informacion de la la estructura del documento</param> /// <param name="filename">Nombre del archivo donde será mostrada la consulta</param> /// <param name="consultaAnalisisDto">Informacion de la consulta a realizar</param> /// <returns>Resultado de la acción</returns> private IHttpActionResult ExportDatosEstructuraDocumento(String view, Dictionary <string, object> estructuraDocumento, String filename, ConsultaAnalisisDto consultaAnalisisDto) { var memoryStreamSalida = DocumentoInstanciaService.ExportDatosEstructuraDocumento(estructuraDocumento, consultaAnalisisDto); var response = new HttpResponseMessage(); var fileDownloadCookie = new CookieHeaderValue("fileDownload", "true") { Path = "/" }; response.StatusCode = HttpStatusCode.OK; response.Content = new ByteArrayContent(memoryStreamSalida.ToArray()); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); response.Content.Headers.ContentDisposition.FileName = filename; response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.Headers.AddCookies(new CookieHeaderValue[] { fileDownloadCookie }); return(ResponseMessage(response)); }