private async Task <ActionResult> BuildDeleteResultAsync(int?sensorId, DeleteSensorModel model = null)
        {
            if (!sensorId.HasValue)
            {
                return(this.StatusCodeView(HttpStatusCode.BadRequest, "Sensor id is required!"));
            }

            var sensor = await _readingsQueries.GetSensorByIdAsync(sensorId.Value);

            if (sensor == null)
            {
                return(this.StatusCodeView(HttpStatusCode.NotFound, $"Sensor with id: {sensorId} not found"));
            }

            if (sensor.IsActive)
            {
                return(this.StatusCodeView(HttpStatusCode.Conflict, "Unable to delete active sensor"));
            }

            var detailsVM = _mapper.Map <SensorDTO, SensorDetailsViewModel>(sensor);
            var vm        = new DeleteSensorViewModel(model ?? new DeleteSensorModel
            {
                Id = sensor.Id
            }, detailsVM);

            return(View(vm));
        }
        public async Task Delete_sensor_and_response_ok_status_code(int dataSetIndex, bool isCompletely)
        {
            //Arrange
            var dataSet = new List <Sensor>
            {
                Defaults.PortableSensor,
                Defaults.StaticSensor
            };
            var currentSensor = dataSet[dataSetIndex];

            using var server = await GetDefaultTestServerBuilder()
                               .UseSensors(currentSensor)
                               .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor)
                               .BuildAsync();

            var client = server.CreateClient();

            var deleteSensor = new DeleteSensorModel {
                Id = currentSensor.Id, IsCompletely = isCompletely
            };
            var deleteSensorJsonStr = JsonConvert.SerializeObject(deleteSensor);

            //Act
            var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Delete, "api/admin/sensors")
            {
                Content = new StringContent(deleteSensorJsonStr, Encoding.UTF8, "application/json")
            });

            //Assert
            response.EnsureSuccessStatusCode();
        }
        public async Task <ActionResult> Delete(
            DeleteSensorModel model)
        {
            if (!ModelState.IsValid)
            {
                return(ValidationProblem());
            }

            try
            {
                var command = _mapper.Map <DeleteSensorModel, DeleteSensorCommand>(model);
                await _mediator.Send(command);
            }
            catch (SensorNotFoundException ex)
            {
                return(NotFound(ex.Message));
            }

            return(Ok());
        }
        public async Task Delete_sensor_and_response_not_found_status_code()
        {
            //Arrange
            using var server = new TestServerBuilder()
                               .UseCustomAuth(AdminAreaDefaults.DefaultUser, AuthSettings.Roles.Supervisor)
                               .Build();
            var client = server.CreateClient();

            var deleteSensor = new DeleteSensorModel {
                Id = 1
            };
            var deleteSensorJsonStr = JsonConvert.SerializeObject(deleteSensor);

            //Act
            var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Delete, "api/admin/sensors")
            {
                Content = new StringContent(deleteSensorJsonStr, Encoding.UTF8, "application/json")
            });

            //Assert
            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
        }
        public async Task <ActionResult> Delete([Bind(Prefix = nameof(DeleteSensorViewModel.Model))]
                                                [BindRequired] DeleteSensorModel model)
        {
            if (!ModelState.IsValid)
            {
                return(await BuildDeleteResultAsync(model.Id, model));
            }

            try
            {
                var command = _mapper.Map <DeleteSensorModel, DeleteSensorCommand>(model);
                await _mediator.Send(command);
            }
            catch (SensorNotFoundException ex)
            {
                return(this.StatusCodeView(HttpStatusCode.NotFound, ex.Message));
            }
            catch (SensorUnableApplyActionException ex)
            {
                return(this.StatusCodeView(HttpStatusCode.Conflict, ex.Message));
            }

            return(RedirectToAction("Index"));
        }
Exemple #6
0
 public DeleteSensorViewModel(DeleteSensorModel model, SensorDetailsViewModel details)
 {
     Model   = model;
     Details = details;
 }