public async Task <IActionResult> Add(NewReceiptVM receiptVM) { var existingValidation = await _receiptRepository.VerifyExistingReceiptInMeasurement(receiptVM.Measurement.Id, receiptVM.Contract.Id); if (existingValidation.IsFailure) { return(ErrorContent(existingValidation.Error)); } var contract = await _contractRepository.GetById(receiptVM.Contract.Id); var receipt = Receipt.Create(receiptVM.Measurement.Id, receiptVM.Contract.Id, receiptVM.CurrentRead, receiptVM.NewRead); var chargeList = await _chargeRepository.GetValidChargeActive(); receipt.CalculateTotalAmount(contract, chargeList); await _receiptRepository.Save(receipt); return(Ok()); }