public ProcessResult <object> ReactivarFormula(FormulaRequest data)
        {
            ProcessResult <object> resultado = new ProcessResult <object>();

            resultado.Result = "-1";
            try
            {
                FormulaEntityRepository.Reactivar(data.CodigoFormula);
                resultado.Result = FormulaEntityRepository.GuardarCambios();
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <FormulaService>(e.Message);
            }
            return(resultado);
        }
        public ProcessResult <object> EliminarFormula(FormulaRequest data)
        {
            ProcessResult <object> resultado = new ProcessResult <object>();

            resultado.Result = "-1";
            try
            {
                FormulaDetalleRequest oOEED = new FormulaDetalleRequest();
                oOEED.CodigoFormula = data.CodigoFormula;
                oOEED.CodigoIdioma  = data.CodigoIdioma;
                FormulaEntityRepository.Eliminar(data.CodigoFormula);
                resultado.Result = FormulaEntityRepository.GuardarCambios();
            }
            catch (Exception e)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <FormulaService>(e.Message);
            }
            return(resultado);
        }
        public ProcessResult <FormulaResponse> RegistrarFormula(FormulaRequest data)
        {
            ProcessResult <FormulaResponse> resultado = new ProcessResult <FormulaResponse>();

            resultado.Result = new FormulaResponse();
            try
            {
                using (TransactionScope ts = new TransactionScope())
                {
                    FormulaEntity FormulaSincronizar = FormulaEntityRepository.GetById(data.CodigoFormula);
                    FormulaEntity FormulaGeneral     = Mapper.Map <FormulaRequest, FormulaEntity>(data);

                    if (FormulaSincronizar != null)
                    {
                        Mapper.Map <FormulaEntity, FormulaEntity>(FormulaGeneral, FormulaSincronizar);
                        FormulaSincronizar.EstadoRegistro = DatosConstantes.EstadoRegistro.Activo;
                        FormulaEntityRepository.Editar(FormulaSincronizar);
                        resultado.Result.CodigoFormula      = data.CodigoFormula;
                        resultado.Result.NombreFormula      = data.NombreFormula;
                        resultado.Result.DescripcionFormula = data.NombreFormula;
                        resultado.Result.EstadoRegistro     = DatosConstantes.EstadoRegistro.Activo;
                    }
                    else
                    {
                        FormulaEntityRepository.Insertar(FormulaGeneral);
                        bool registroExitoso = resultado.IsSuccess;
                        if (!registroExitoso)
                        {
                            resultado.IsSuccess = false;
                            resultado.Exception = new ApplicationLayerException <FormulaService>(MensajesSistemaResource.EtiquetaError);
                        }
                        resultado.Result.CodigoFormula = FormulaGeneral.CodigoFormula;
                    }

                    FormulaEntityRepository.GuardarCambios();

                    //BUSCA INDICADOR
                    IndicadorRequest IndReq = new IndicadorRequest();
                    IndReq.CodigoIndicador = data.CodigoIndicador;
                    IndReq.CodigoIdioma    = data.CodigoIdioma;
                    var res = indicadorService.ObtenerIndicador(IndReq);

                    //ACTUALIZA EL CÓDIGO DE FORMULA EN EL INDICADOR Y LO ACTUALIZA
                    IndReq.CodigoFormula = resultado.Result.CodigoFormula;
                    var response = indicadorService.RegistrarIndicador(IndReq);

                    //posterior a ello registrar la formula detalle: (codigo desarrollado abajo)

                    List <BandejaVariableRequest> lstVariables = new List <BandejaVariableRequest>();

                    String pattern = @"\[([^\[\]]+)\]";

                    foreach (Match m in Regex.Matches(data.NombreFormula, pattern))
                    {
                        lstVariables.Add(new BandejaVariableRequest()
                        {
                            NombreVariable = m.Groups[1].Value, CodigoIdioma = data.CodigoIdioma
                        });
                    }

                    for (int i = 0; i < lstVariables.Count; i++)
                    {
                        lstVariables[i].CodigoVariable = variableService.BuscarVariable(lstVariables[i]).Result[0].CodigoVariable;
                    }

                    FormulaDetalleRequest objFormulaDetalle = new FormulaDetalleRequest();

                    for (int i = 0; i < lstVariables.Count; i++)
                    {
                        objFormulaDetalle.CodigoFormula    = resultado.Result.CodigoFormula;
                        objFormulaDetalle.CodigoVariable   = lstVariables[i].CodigoVariable;
                        objFormulaDetalle.DescripcionValor = "Valor" + (i + 1);

                        var results = formulaDetalleService.RegistrarFormulaDetalle(objFormulaDetalle);
                    }
                    ts.Complete();
                }
            }
            catch (Exception ex)
            {
                resultado.IsSuccess = false;
                resultado.Exception = new ApplicationLayerException <FormulaService>(ex.Message);
            }
            return(resultado);
        }