예제 #1
0
        public async Task CalculateUsage(Guid meterReadId, Guid addressId, double meterState, Guid messageMeterId, Guid usageId)
        {
            var address = await _addressRepository.Get(addressId);

            var meterReadTask = _meterReadRepository.Get(meterReadId);

            MeterRead meterRead = null;

            if (!address.LastFinishedMeterReadProcess.HasValue)
            {
                meterRead = await meterReadTask;

                meterRead.CreateUsage(meterState, meterState, DateTime.Now, messageMeterId, Guid.NewGuid());

                _meterReadRepository.Update(meterRead);

                return;
            }

            var lastMeterRead = await _meterReadRepository.Get(address.LastFinishedMeterReadProcess.Value);

            var lastUsageForMeter = lastMeterRead.Usages.FirstOrDefault(i => i.MeterId == messageMeterId);

            meterRead = await meterReadTask;

            meterRead.CreateUsage(lastUsageForMeter?.CurrentRead ?? meterState, meterState, DateTime.Now, messageMeterId,
                                  usageId);

            _meterReadRepository.Update(meterRead);
        }
예제 #2
0
        public Task AddUsage(int accountId, MeterRead reading, Guid?uploadResultId)
        {
            //_dbContext.MeterReads.Add(new MeterRead
            //{
            //    AccountId = accountId,
            //    UploadResultId = uploadResultId,
            //    Reading = reading.Reading,
            //    ReadingDateTime = reading.ReadingDateTime
            //});

            return(_dbContext.SaveChangesAsync());
        }
예제 #3
0
        public async Task <IActionResult> BeginMeterReadProcess([FromBody] MeterRead meter)
        {
            var address = await _addressRepository.Get(meter.AddressId);

            if (address == null)
            {
                return(NotFound(meter.AddressId));
            }

            address.BeginMeterReadProcess(meter.MeterReadId);

            _addressRepository.Update(address);

            return(StatusCode(204));
        }