public FormulaCalculateResponse Calculate(CalculateFormulaRequest calculateFormulaRequest) { try { var formula = StringHelper.Base64ToString(calculateFormulaRequest.Formula); var formulaDataWrapper = new FormulaDataWrapper { Data = calculateFormulaRequest.Data }; var json = TradeCubeJsonSerializer.Serialize(formulaDataWrapper); var formulaEvaluatorRequest = new FormulaEvaluatorRequest(json, formula, "main") { TimeoutInterval = calculateFormulaRequest.TimeoutSeconds }; return(FormulaEvaluator.Evaluate(formulaEvaluatorRequest)); } catch (Exception ex) { return(new FormulaCalculateResponse { IsSuccess = false, Message = ex.Message }); } }
public IActionResult Calculate([FromBody] CalculateFormulaRequest calculateFormulaRequest) { try { var formulaEvaluatorResponse = calculateService.Calculate(calculateFormulaRequest); var apiResponseWrapper = new ApiResponseWrapper <FormulaResponse> { Data = new FormulaResponse { Value = formulaEvaluatorResponse.Value }, Message = formulaEvaluatorResponse.Message, ErrorCount = formulaEvaluatorResponse.IsSuccess ? 0 : 1, Errors = formulaEvaluatorResponse.IsSuccess ? new List <string>() : new List <string> { formulaEvaluatorResponse.Message } }; return(formulaEvaluatorResponse.IsSuccess ? Ok(apiResponseWrapper) : BadRequest(apiResponseWrapper)); } catch (Exception ex) { logger.LogError(ex, "{Message}", ex.Message); return(BadRequest(new ApiResponseWrapper <WebServiceResponse> { Message = ex.Message, Status = ApiConstants.FailedResult })); } }
public async Task <IActionResult> Calculate([FromBody] CalculateFormulaRequest postRequest) { var calc = new AttendanceCalculator(); await calc.LoadCompanyStaticDataAsConstantAsync(mstaticRepo); var result = calc.Calculate(postRequest.Formula, await postRequest.Attandance.ToAttendanceDataAsync(mstaticRepo)); return(Ok(new FormulaCalculatedResponse { Result = result })); }
public async Task Calculate_penjumlahan_sederhana() { var calcRequest = new CalculateFormulaRequest { Formula = "1+2" }; var response = await mClient.PostAsJsonAsync("api/attendancecalculator/calculate", calcRequest); response.StatusCode.Should().Be(HttpStatusCode.OK); var result = await response.Content.ReadAsAsync <FormulaCalculatedResponse>(); result.Result.Should().Be(3); }
public async Task Calculate_formula_dengan_data_attandance() { var calcRequest = new CalculateFormulaRequest { Formula = "iif((DateOut > DateIn) AND (TimeOfDateOut > 0) AND IsNullDateOut=0, 1, 0)", Attandance = new Attendance { DateIn = new DateTime(2020, 1, 1, 7, 0, 0), DateOut = new DateTime(2020, 1, 3, 17, 0, 0) } }; var response = await mClient.PostAsJsonAsync("api/attendancecalculator/calculate", calcRequest); response.StatusCode.Should().Be(HttpStatusCode.OK); var result = await response.Content.ReadAsAsync <FormulaCalculatedResponse>(); result.Result.Should().Be(1); }
public async Task Calculate_formula_yang_mengandung_remarkId() { var calcRequest = new CalculateFormulaRequest { Formula = "iif(Remark = AL05,2,1)", Attandance = new Attendance { DateIn = new DateTime(2020, 1, 1, 7, 0, 0), DateOut = new DateTime(2020, 1, 3, 17, 0, 0), Remark = "Al05" } }; var response = await mClient.PostAsJsonAsync("api/attendancecalculator/calculate", calcRequest); response.StatusCode.Should().Be(HttpStatusCode.OK); var result = await response.Content.ReadAsAsync <FormulaCalculatedResponse>(); result.Result.Should().Be(2); }