public void AddAction(int projectId, SlaveAction action, string userId)
        {
            var project = _unitOfWork.ProjectRepository.GetById(projectId);

            if (project.UserId != userId)
            {
                throw new AccessDeniedException();
            }

            var slaveActionEntity = Mapper.Map <SlaveAction, SlaveActionEntity>(action);

            slaveActionEntity.ProjectId = projectId;

            _unitOfWork.SlaveActionRepository.Insert(slaveActionEntity);
            _unitOfWork.Save();
        }
        public void EditAction(int projectId, SlaveAction action, string userId)
        {
            var project = _unitOfWork.ProjectRepository.GetById(projectId);

            if (project.UserId != userId)
            {
                throw new AccessDeniedException();
            }

            var slaveActionEntity = _unitOfWork.SlaveActionRepository.GetById(action.Id);

            slaveActionEntity.NumberOfRegisters = action.NumberOfRegisters;
            slaveActionEntity.ProjectId         = projectId;
            slaveActionEntity.SlaveAddress      = action.SlaveAddress;
            slaveActionEntity.StartAddress      = action.StartAddress;
            slaveActionEntity.Formula           = action.Formula;
            slaveActionEntity.ActionType        = action.ActionType;

            _unitOfWork.SlaveActionRepository.Update(slaveActionEntity);

            var dataTypes = _unitOfWork.DataTypesRepository.Get(x => x.SlaveActionEntityId == slaveActionEntity.Id);

            foreach (var dataType in dataTypes)
            {
                _unitOfWork.DataTypesRepository.Delete(dataType.Id);
            }

            foreach (var dataType in action.Types)
            {
                var dataTypeEntity = new DataTypeEntity()
                {
                    SlaveActionEntityId = slaveActionEntity.Id,
                    Type = dataType
                };

                _unitOfWork.DataTypesRepository.Insert(dataTypeEntity);
            }

            _unitOfWork.Save();
        }