예제 #1
0
        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
                });
            }
        }
예제 #2
0
        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
                }));
            }
        }
예제 #3
0
        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);
        }