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)); } }
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)); } }
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); }