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); }
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); }