Ejemplo n.º 1
0
        public Response GenerarDocumento(string NombrePlantilla, int IdCicloAuditoria)
        {
            Response resul = new Response {
                State = ResponseType.Success
            };

            try
            {
                ElaboracionAuditoriaManager elaboracionAuditoriaManager = new ElaboracionAuditoriaManager();
                var resulBDDocumento = repositoryMySql.SimpleSelect <Paramdocumento>(x => x.NombrePlantilla == 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            methodPlantilla   = resulBDDocumento.First().Method;
                RequestDataReport requestDataReport = new RequestDataReport {
                    IdCiclo = IdCicloAuditoria
                };
                //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);
                }

                WordHelper generadorWord = new WordHelper(pathPlantilla);
                //generamos el documento en word
                string fileNameGenerado = generadorWord.GenerarDocumento(resulMethod.Object.data, resulMethod.Object.HeadersTables, pathOutPlantilla);
                resul.Message = fileNameGenerado;
            }
            catch (Exception ex)
            {
                ProcessError(ex, resul);
            }
            return(resul);
        }
Ejemplo n.º 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);
        }