Пример #1
0
        public async Task <IActionResult> EditBill([FromBody] CreateUpdateBillRequest createUpdateBillRequest)
        {
            try
            {
                Helper helper = new Helper(_configuration);
                //var validator = new BillCreateValidator();
                //var result = validator.Validate(createBillRequest);
                //if (!result.IsValid)
                //{
                //    return BadRequest(result);
                //}
                if (ModelState.IsValid)
                {
                    this.Request.Headers.TryGetValue("SignInName", out vSignInName);
                    createUpdateBillRequest.SignInName = vSignInName[0];
                    createUpdateBillRequest            = await helper.Process(createUpdateBillRequest);

                    var createBillResponse = _mediator.Send(createUpdateBillRequest).Result;
                    return(Ok(createBillResponse));
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                _exceptionHandler.ErrorCode    = "1000";
                _exceptionHandler.ErrorMessage = ex.Message;
                return(BadRequest(_exceptionHandler));
            }
        }
Пример #2
0
        public async Task <IActionResult> CreateBill([FromBody] CreateUpdateBillRequest createBillRequest)
        {
            try
            {
                Helper helper = new Helper(_configuration);
                //var validator = new BillCreateValidator();
                //var result = validator.Validate(createBillRequest);
                //if (!result.IsValid)
                //{
                //    return BadRequest(result);
                //}
                createBillRequest.TransactionId = -1;
                if (ModelState.IsValid)
                {
                    createBillRequest = await helper.Process(createBillRequest);

                    var createBillResponse = _mediator.Send(createBillRequest).Result;
                    if (createBillResponse.TransactionId == 0)
                    {
                        return(BadRequest(new { message = "Operation failed due to internal issue with an application" }));
                    }
                    return(Ok(createBillResponse));
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                _exceptionHandler.ErrorCode    = "1000";
                _exceptionHandler.ErrorMessage = ex.Message;
                return(BadRequest(_exceptionHandler));
            }
        }
Пример #3
0
        public async Task <CreateUpdateBillRequest> Process(CreateUpdateBillRequest createBillRequest)
        {
            var   baseCurrency = string.Empty;
            float baseRate     = 0;

            foreach (Participant participant in createBillRequest.Participants)
            {
                if (participant.TransactionType.Equals("Paid"))
                {
                    baseCurrency = participant.Currency;
                    //
                    break;
                }
            }
            List <Currency> currencies = await CreateCurrencyConverterAPI();

            foreach (Currency currency in currencies)
            {
                if (baseCurrency.Equals(currency.Name))
                {
                    baseRate = currency.Rate;
                }
            }
            foreach (Participant participant in createBillRequest.Participants)
            {
                foreach (Currency currency in currencies)
                {
                    if (participant.Currency.Equals(currency.Name))
                    {
                        participant.Rate = currency.Rate / baseRate;
                    }
                }
            }
            return(createBillRequest);
        }