public async Task AddMetersToDataBase(CreateMetersDaily createMetersDaily) { var valid = _dataAnnotationsValidator.TryValidate(createMetersDaily, out var validationMessages); if (!valid) { var ex = new InvalidOperationException("Invalid data for task create operation"); ex.Data.Add(nameof(validationMessages), validationMessages.Select(r => r.ErrorMessage)); throw ex; } foreach (var meterValue in createMetersDaily.Values) { var newMeter = new Meter() { CustomerId = createMetersDaily.CustomerId, MeterId = createMetersDaily.MeterId, MeasureDateTime = DateTime.ParseExact(meterValue.Key, "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture), Value = meterValue.Value }; await _metersDbContext.AddAsync(newMeter); } await _metersDbContext.SaveChangesAsync(); }
public async Task <IActionResult> Post([FromBody] CreateMetersDaily createDto) { try { await _metersService.AddMetersToDataBase(createDto); return(StatusCode(201)); } catch (InvalidOperationException ex) { var messages = new List <string> { ex.Message }; if (ex.Data.Contains("validationMessages")) { messages.AddRange((IEnumerable <string>)ex.Data["validationMessages"]); } return(BadRequest(new ErrorResponse(messages))); } }