private MeterDto SaveSmi(MeterDto meterDto) { var savedMeter = _meterRepository.GetBySerial(meterDto.Serial); var meter = _mapper.Map <MeterDto, Meter>(meterDto); if (savedMeter != null) { return(CheckMeterRegistered(meter, meterDto)); } meter.MeterModel = _meterModelService.GetExistingMeterModel(meterDto.MeterModel.Name); meter.RateType = _rateTypeService.GetExistingRateType(meterDto.RateType.Name); meter.MeterKeys = _meterKeyService.GetBySerial(meterDto.Serial); meter.AccountantStatus = AccountantStatus.NO_INFORMATION; var status = _meterForwarderService.ForwardCreation(_mapper.Map <Meter, MeterDto>(meter)); if (!status.IsSuccessStatusCode) { throw new BadRequestException(JsonConvert .DeserializeObject <ErrorMessageDto>(status.Content.ReadAsStringAsync().Result).ErrorMessage); } var meterUnregisteredDto = _meterUnregisteredService.FindBySerial(meter.Serial); if (meterUnregisteredDto != null) { _meterUnregisteredService.Deactive(meter.Serial); } return(_mapper.Map <Meter, MeterDto>(_meterRepository.Save(meter))); }
public KeysDto Update(KeysDto keysDto) { var meterKeys = GetExistingMeterKey(keysDto.Serial); meterKeys.UpdateFields(keysDto); var meter = _meterRepository.GetBySerial(keysDto.Serial); if (meter == null) { return(_mapper.Map <MeterKeys, KeysDto>(_meterKeyRepository.Update(meterKeys))); } HttpResponseMessage status; meter.MeterKeys = meterKeys; if (meter.Smc == null) { status = _meterForwarderService.ForwardEdition(_mapper.Map <Meter, MeterDto>(meter)); } else { var smc = _mapper.Map <SmcDto>(meter.Smc); smc.KeysDto = keysDto; status = _smcForwarderService.ForwardEdition(smc); } if (!status.IsSuccessStatusCode) { throw new BadRequestException(JsonConvert .DeserializeObject <ErrorMessageDto>(status.Content.ReadAsStringAsync().Result).ErrorMessage); } return(_mapper.Map <MeterKeys, KeysDto>(_meterKeyRepository.Update(meterKeys))); }