public async Task <Response> Add(WaterMeterCreateModel waterMeter)
        {
            WaterMeterModel convertWaterMeter = Mapper.Map <WaterMeterCreateModel, WaterMeterModel>(waterMeter);

            WaterMeterModel overlap = await _dbContext.WaterMeters.FirstOrDefaultAsync(w => w.Id == waterMeter.Id);

            if (overlap != null)
            {
                return new Response
                       {
                           Message = "Такой Id уже используется."
                       }
            }
            ;

            try
            {
                _dbContext.WaterMeters.Add(convertWaterMeter);

                await _dbContext.SaveChangesAsync();

                return(new Response {
                    Ok = true
                });
            }
            catch
            {
                return(new Response {
                    Message = "Произошла ошибка при добавлении. Пожалуйсте повторите попытку."
                });
            }
        }
        public async Task <Response> Delete(int id)
        {
            WaterMeterModel target = await _dbContext.WaterMeters.FindAsync(id);

            if (target is null)
            {
                return new Response {
                           Message = "Счетчик не найден."
                }
            }
            ;

            try
            {
                _dbContext.WaterMeters.Remove(target);

                await _dbContext.SaveChangesAsync();

                return(new Response {
                    Ok = true
                });
            }
            catch
            {
                return(new Response {
                    Message = "Произошла ошибка при удалении. Пожалуйсте повторите попытку."
                });
            }
        }
Example #3
0
        public async Task <ActionResult <WaterMeter> > Post(WaterMeterModel itemModel)
        {
            try
            {
                if (itemModel == null)
                {
                    return(BadRequest("WaterMeter object is null"));
                }

                if (!ModelState.IsValid)
                {
                    return(BadRequest("Invalid model object"));
                }

                var item = _mapper.Map <WaterMeter>(itemModel);

                await _repository.AddWaterMeterAsync(item);

                return(CreatedAtAction(nameof(Get),
                                       new { id = item.Id }, item));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, $"Internal server error: {ex.Message}"));
            }
        }
Example #4
0
        public async Task <ActionResult <WaterMeter> > Put(WaterMeterModel itemModel, int id)
        {
            try
            {
                if (itemModel == null)
                {
                    return(BadRequest("WaterMeter object is null"));
                }

                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var dbItem = await _repository.GetWaterMeterAsync(id);

                if (dbItem == null)
                {
                    return(NotFound());
                }

                var item = _mapper.Map <WaterMeter>(itemModel);

                await _repository.UpdateWaterMeterAsync(dbItem, item);

                return(CreatedAtAction(nameof(Get),
                                       new { id = item.Id }, item));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, $"Internal server error: {ex.Message}"));
            }
        }
Example #5
0
        public async Task PutNOK()
        {
            var model = new WaterMeterModel
            {
            };

            var smodel = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");

            // Act
            var response = await this.Fixture.Client.PutAsync("/api/WaterMeters/1", smodel);

            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
        }
        public async Task <Response> UpdateBySerialNumber(string serialNumber, WaterMeterUpdateModel waterMeter)
        {
            WaterMeterModel targetWaterMeter = await _dbContext.WaterMeters.FirstOrDefaultAsync(w => w.SerialNumber.Equals(serialNumber));

            if (targetWaterMeter is null)
            {
                return new Response {
                           Message = "Счетчик не найден."
                }
            }
            ;

            WaterMeterModel convertWaterMeter = Mapper.Map <WaterMeterUpdateModel, WaterMeterModel>(waterMeter);

            return(await UpdateWaterMeterValues(targetWaterMeter, convertWaterMeter));
        }
Example #7
0
        public async Task PostNOK()
        {
            var model = new WaterMeterModel
            {
                FirmwareVersion = "v." + RandomInt(1, 99).ToString(),
                State           = RandomString(4)
            };

            var smodel = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");

            // Act
            var response = await this.Fixture.Client.PostAsync("/api/WaterMeters", smodel);

            // Assert
            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
        }
        private async Task <Response> UpdateWaterMeterValues(WaterMeterModel oldValue, WaterMeterModel newValue)
        {
            try
            {
                _dbContext.Entry(oldValue).CurrentValues.SetValues(newValue);

                await _dbContext.SaveChangesAsync();

                return(new Response {
                    Ok = true
                });
            }
            catch
            {
                return(new Response {
                    Message = "Произошла ошибка при обновлении. Пожалуйсте повторите попытку."
                });
            }
        }
        public async Task <Response> UpdateByBuildingId(int buildingId, WaterMeterUpdateModel waterMeter)
        {
            WaterMeterModel targetWaterMeter = await _dbContext.Buildings
                                               .Include(b => b.WaterMeter)
                                               .Where(b => b.Id == buildingId)
                                               .Select(b => b.WaterMeter)
                                               .FirstOrDefaultAsync();

            if (targetWaterMeter is null)
            {
                return new Response {
                           Message = "Счетчик не найден."
                }
            }
            ;

            WaterMeterModel convertWaterMeter = Mapper.Map <WaterMeterUpdateModel, WaterMeterModel>(waterMeter);

            return(await UpdateWaterMeterValues(targetWaterMeter, convertWaterMeter));
        }
Example #10
0
        public async Task Post()
        {
            WaterMeterModel model = CreateModel();

            var smodel = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");

            // Act
            var response = await this.Fixture.Client.PostAsync("/api/WaterMeters", smodel);

            response.EnsureSuccessStatusCode();

            // Assert
            var content = await response.Content.ReadAsStringAsync();

            Assert.False(string.IsNullOrWhiteSpace(content));

            var newModel = JsonConvert.DeserializeObject <WaterMeterModel>(content);

            Assert.True(newModel.Id > 0);
        }
Example #11
0
        public async Task <WaterMeterReturnModel> GetById(int id)
        {
            WaterMeterModel waterMeter = await _dbContext.WaterMeters.FirstOrDefaultAsync(w => w.Id == id);

            return(Mapper.Map <WaterMeterModel, WaterMeterReturnModel>(waterMeter));
        }