예제 #1
0
        public IActionResult GenerarDocumento(RequestExternalReport requestGenerarDocumento)
        {
            Binnacle.ProcessEvent(new Event {
                category = Event.Category.Information, description = $"Metodo GenerarDocumento llamado"
            });
            TomaDecisionManager tomaDecisionManager = new TomaDecisionManager();
            var resul = tomaDecisionManager.GenerarDocumentoByIdCiclo(requestGenerarDocumento);

            if (resul.State == Domain.Main.Wraper.ResponseType.Success)
            {
                string fileName = resul.Message;
                fileName = fileName.StartsWith("\\") ? "\\" + fileName : fileName;
                return(new PhysicalFileResult(fileName, System.Net.Mime.MediaTypeNames.Application.Octet));
            }
            return(Problem(resul.Message));
        }
예제 #2
0
        public Response GenerarDocumento(RequestExternalReport requestExternalReport)
        {
            Response resul = new Response {
                State = ResponseType.Success
            };

            try
            {
                var resulBDDocumento = repositoryMySql.SimpleSelect <Paramdocumento>(x => x.NombrePlantilla == requestExternalReport.NombrePlantilla);
                if (resulBDDocumento.Count == 0 || string.IsNullOrEmpty(resulBDDocumento.First().Method))
                {
                    resul.State   = ResponseType.Warning;
                    resul.Message = "Plantilla  no implmentada";
                    return(resul);
                }
                string pathPlantilla    = Path.Combine(Global.PATH_PLANTILLAS, resulBDDocumento.First().Area, resulBDDocumento.First().Path);
                string pathOutPlantilla = Path.Combine(Global.PATH_PLANTILLAS, resulBDDocumento.First().Area, "salidas");
                string fileNameGenerado = string.Empty;

                WordHelper generadorWord = new WordHelper(pathPlantilla);

                if (requestExternalReport.SoloGenerar)
                {
                    List <WordHelper.ItemValues> itemValues = new List <WordHelper.ItemValues>();
                    requestExternalReport.ListItemReporte.ForEach(x =>
                    {
                        itemValues.Add(new WordHelper.ItemValues {
                            key = x.Key, values = x.Value
                        });
                    });

                    //generamos el documento en word
                    fileNameGenerado = generadorWord.GenerarDocumento(itemValues, null, pathOutPlantilla);
                    resul.Message    = fileNameGenerado;
                }

                ///TDO rescatamos el id del ciclo
                var ciclo = repositoryMySql.GetDataByProcedure <Praciclosprogauditorium>("spGetCilcloByIdServicioAnio", requestExternalReport.IdServicio, requestExternalReport.Anio);
                if (ciclo.Count == 0)
                {
                    resul.State   = ResponseType.Warning;
                    resul.Message = $"No se tiene programas y/o auditorias con el Id Servicio: {requestExternalReport.IdServicio} y anio {requestExternalReport.Anio}";
                    return(resul);
                }


                ElaboracionAuditoriaManager elaboracionAuditoriaManager = new ElaboracionAuditoriaManager();


                string            methodPlantilla   = resulBDDocumento.First().Method;
                RequestDataReport requestDataReport = new RequestDataReport {
                    IdCiclo = (int)ciclo.First().IdPrAcicloProgAuditoria
                };
                //llamamos el metodo para recuperar data
                var      myMethod   = elaboracionAuditoriaManager.GetType().GetMethod(methodPlantilla);
                object[] parameters = new object[] { requestDataReport };
                ResponseObject <GlobalDataReport> resulMethod = myMethod.Invoke(elaboracionAuditoriaManager, parameters) as ResponseObject <GlobalDataReport>;
                if (resulMethod.State != ResponseType.Success)
                {
                    return(resulMethod);
                }

                ///TDO completamos la informacion con los parametros de entrada
                requestExternalReport.ListItemReporte?.ForEach(x =>
                {
                    resulMethod.Object.data.GetType().GetProperty(x.Key)?.SetValue(resulMethod.Object.data, x.Value);
                });


                //generamos el documento en word
                fileNameGenerado = generadorWord.GenerarDocumento(resulMethod.Object.data, resulMethod.Object.HeadersTables, pathOutPlantilla);
                resul.Message    = fileNameGenerado;
            }
            catch (Exception ex)
            {
                ProcessError(ex, resul);
            }
            return(resul);
        }