public async Task <IActionResult> Delete(int actionDeviceId)
        {
            ActionDevice actionDevice = await _repository.FindAsync(actionDeviceId);

            if (actionDevice == null)
            {
                return(NotFound(actionDeviceId));
            }
            ActionDeviceViewModel actionDeviceVM = _mapper.Map <ActionDeviceViewModel>(actionDevice);

            _repository.Delete(actionDevice);
            await _unitOfWork.SaveChangesAsync();

            return(Ok(actionDeviceVM));
        }
        public async Task <IActionResult> Post([FromBody] ActionDeviceViewModel actionDeviceVM)
        {
            if (ModelState.IsValid)
            {
                if (actionDeviceVM == null)
                {
                    return(BadRequest($"{nameof(actionDeviceVM)} cannot be null"));
                }
                ActionDevice actionDevice = _mapper.Map <ActionDevice>(actionDeviceVM);
                EntityEntry <ActionDevice> addedActionDevice = await _repository.InsertAsync(actionDevice);

                await _unitOfWork.SaveChangesAsync();

                actionDeviceVM = _mapper.Map <ActionDeviceViewModel>(addedActionDevice.Entity);
                return(CreatedAtAction("GetByActionDeviceId", new { actionDeviceId = actionDeviceVM.ActionDeviceId }, actionDeviceVM));
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
        public async Task <IActionResult> Patch(int actionDeviceId, [FromBody] JsonPatchDocument <ActionDeviceViewModel> patch)
        {
            if (ModelState.IsValid)
            {
                if (patch == null)
                {
                    return(BadRequest($"{nameof(patch)} cannot be null"));
                }

                ActionDeviceViewModel actionDeviceVM = _mapper.Map <ActionDeviceViewModel>(await _repository.FindAsync(actionDeviceId));
                patch.ApplyTo(actionDeviceVM, e => ModelState.AddModelError("", e.ErrorMessage));
                if (ModelState.IsValid)
                {
                    _repository.Update(_mapper.Map <ActionDevice>(actionDeviceVM));
                    await _unitOfWork.SaveChangesAsync();

                    return(NoContent());
                }
            }

            return(BadRequest(ModelState));
        }
        public async Task <IActionResult> Put(int actionDeviceId, [FromBody] ActionDeviceViewModel actionDeviceVM)
        {
            if (ModelState.IsValid)
            {
                if (actionDeviceVM == null)
                {
                    return(BadRequest($"{nameof(actionDeviceVM)} cannot be null"));
                }

                if (actionDeviceId != actionDeviceVM.ActionDeviceId)
                {
                    return(BadRequest("Conflicting ActionDevice ActionDeviceId in parameter and model data"));
                }
                _repository.Update(_mapper.Map <ActionDevice>(actionDeviceVM));
                await _unitOfWork.SaveChangesAsync();

                return(NoContent());
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }