コード例 #1
0
        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));
        }
コード例 #2
0
        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");
        }