示例#1
0
        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();
        }
示例#2
0
        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)));
            }
        }