public async Task <ActionResult <MeterReadingResource> > CreateMeterReading([FromBody] List <MeterReadingResource> meterReadingResourceList) { _meterReadingReport = new MeterReadingReport(); var validator = new MeterReadingResourceValidator(); foreach (var meterReadingResource in meterReadingResourceList.ToList()) { var validationResult = await validator.ValidateAsync(meterReadingResource); if (!validationResult.IsValid) { _meterReadingReport.AddToMeterReadingValidationReport(meterReadingResource , validationResult.Errors .Select(n => n.ErrorMessage) , MeterReadingStatusReport.Failed); meterReadingResourceList.Remove(meterReadingResource); } } foreach (var meterReadingResource in meterReadingResourceList.ToList()) { var toMeterReading = _mapper.Map <MeterReadingResource, MeterReading>(meterReadingResource); var account = await _accountService.GetAccountById(toMeterReading.AccountId); if (account == null) { _meterReadingReport.AddToMeterReadingValidationReport(meterReadingResource , new List <string> { errorMessages.AccountNoExist } , MeterReadingStatusReport.Failed); meterReadingResourceList.Remove(meterReadingResource); continue; } var meterReading = await _meterReadingService.GetMeterReadingById(toMeterReading.AccountId); if (meterReading != null) { _meterReadingReport.AddToMeterReadingValidationReport(meterReadingResource , new List <string> { errorMessages.EntryAlreadyExist } , MeterReadingStatusReport.Failed); meterReadingResourceList.Remove(meterReadingResource); } else { await CreateMeterReading(toMeterReading); } } return(Ok(_meterReadingReport)); }
public async System.Threading.Tasks.Task TestMeterReadingAsync() { //Arrange var meterReadingResource = new MeterReadingResource() { AccountId = 2344, MeterReadingDateTime = DateTime.Parse("22/04/2019 09:24"), MeterReadValue = "01002" }; var validator = new MeterReadingResourceValidator(); //Act var validationResult = await validator.ValidateAsync(meterReadingResource); //Assert Assert.True(validationResult.IsValid, "Not valid"); }