/// <summary> /// Permite anular una Inspección /// </summary> /// <param name="">Entidad Observacion Planeada</param> /// <returns>valor booleano con el resultado de la operacion</returns> public JsonResult EliminarFormula(FormulaRequest data) { data.CodigoIdioma = obtenerCodigoIdioma(); var response = formulaService.EliminarFormula(data); return(Json(response)); }
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 void TestParser2(string operation) { // Arrange var input = $@"<request><expression><operation>{operation}</operation><operand><const>20</const></operand><operand> <expression><operation>minus</operation><operand><const>10</const></operand><operand><const>5</const></operand> </expression></operand></expression></request>"; var expected = new FormulaRequest { Expression = new Expression { Operation = operation, Operands = new[] { new Operand { Value = 20 }, new Operand { Expression = new Expression { Operation = "minus", Operands = new [] { new Operand { Value = 10 }, new Operand { Value = 5 } } } } } } }; // Act var parser = new XmlParser(); var result = parser.Parse <FormulaRequest>(input); // Assert result.ShouldDeepEqual(expected); }
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); }
public JsonResult ReactivarFormula(FormulaRequest data) { var response = formulaService.ReactivarFormula(data); return(Json(response)); }
public ActionResult <Dictionary <int, double> > AddFormula([FromBody] FormulaRequest request) { try { var inputList = request.Operands.Where(x => x.Type == (int)OperandTypeValue.INPUT).ToList(); List <Operand> list = request.Operands.Where(x => x.Type != (int)OperandTypeValue.INPUT && x.OperandID == x.ID) .OrderBy(x => x.Sequence).ToList(); var tmp = request.GroupValues.ToList(); foreach (var item in tmp) { var t = list.Where(x => x.Type == (int)OperandTypeValue.GROUP_VALUE && x.OperandID == item.OperandID).FirstOrDefault(); if (t != null) { list.Remove(t); t.GroupValues.Add(item); list.Add(t); } } //parse inputed value VariableSet vSetBaseFormula = new VariableSet(); var ep = new ExpressionParser(); foreach (var item in inputList) { //keyValuesOperand.Add(item.Name, item.Value); vSetBaseFormula.RegisterVariable(OperandType.Double, item.Name, item.Value); } //----------------------------- Dictionary <int, double> listResult = new Dictionary <int, double>(); Parallel.ForEach(request.testNumber, async(item) => { foreach (var operand in list) { if (operand.Childs != null) { List <Operand> childs = operand.Childs.ToList(); if (childs.Count > 0) { Console.WriteLine(operand.Name + "x " + operand.Value); vSetBaseFormula = await GetOperandChildsAsync(operand, vSetBaseFormula); } else { var compiledExpression = ep.Parse(operand.Expression); var resultStack = compiledExpression.Evaluate(vSetBaseFormula); var tmp = Convert.ToDouble(resultStack.Pop().GetValue()); if (vSetBaseFormula.Where(x => x.VariableName.Equals(operand.Name)).FirstOrDefault() == null) { vSetBaseFormula.RegisterVariable(OperandType.Double, operand.Name, tmp); } } } } var ce = ep.Parse(request.baseFormula.Expression); foreach (var param in vSetBaseFormula) { Console.WriteLine(param.VariableName + " " + param.Value); } var resul = ce.Evaluate(vSetBaseFormula); double value = Convert.ToDouble(resul.Pop().GetValue()); listResult.Add(item, value); } ); _context.BaseFormulas.Add(request.baseFormula); _context.Operands.AddRange(request.Operands); var check = _context.SaveChanges() > 0; if (check) { return(Ok(listResult)); } else { return(BadRequest("Cannot save to db")); } } catch (Exception e) { return(BadRequest(e.Message)); } }
FormulaResponse InvokeCommunicateWithFormula(FormulaRequest request) { return(onCommunicateWithFormula?.Invoke(request)); }
public decimal Calculate(string formula, OrderLine orderLine) { try { dynamic inputs = new ExpandoObject(); IDictionary <string, object> dictionary = (IDictionary <string, object>)inputs; dictionary.Add("OrderLineQty", orderLine.Quantity); IEnumerable <OrderLineOption> olOptions = orderLine.OrderLineOptions; if (olOptions != null) { foreach (OrderLineOption olOption in olOptions) { string varName = GuidToVar(olOption.ProductOptionId); if (dictionary.ContainsKey(varName)) { continue; // duplicate product option values: should not happen (but it did)!! } if (!string.IsNullOrWhiteSpace(olOption.ProductOptionValueId)) { string varValue = GuidToVar(olOption.ProductOptionValueId); dictionary.Add(varName, varValue); } else { dictionary.Add(varName, olOption.ProductOptionValue); } } } FormulaRequest req = new FormulaRequest() { Formula = formula, Inputs = inputs }; using (var client = new System.Net.Http.HttpClient()) { // client.BaseAddress = new Uri("http://localhost:5051/"); string webApiUrl = Properties.Settings.Default.WebApiUrl; client.BaseAddress = new Uri(webApiUrl); // "http://webapi-openbiz-dev.azurewebsites.net/" client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = client.PostAsJsonAsync("nodejs/execFormula.js", req).Result; if (response.IsSuccessStatusCode) { var headers = response.Headers; FormulaResult returnValue = response.Content.ReadAsAsync <FormulaResult>().Result; return(returnValue.Result); } else { return(0); } } } catch (Exception ex) { throw; } }