public async Task Handle(DeleteGroupCommand message)
            {
                if (!_database.IsOpen)
                {
                    throw new DatabaseClosedException();
                }

                var isRecycleBin = message.GroupId.Equals(_database.RecycleBinId);

                if (_database.IsRecycleBinEnabled && (string.IsNullOrEmpty(_database.RecycleBinId) || _database.RecycleBinId.Equals(Constants.EmptyId)))
                {
                    _database.CreateGroup(_database.RootGroupId, message.RecycleBinName, true);
                }

                if (!_database.IsRecycleBinEnabled || message.ParentGroupId.Equals(_database.RecycleBinId) || isRecycleBin)
                {
                    _database.DeleteEntity(message.GroupId);
                }
                else
                {
                    await _database.AddGroup(_database.RecycleBinId, message.GroupId);
                }

                await _database.RemoveGroup(message.ParentGroupId, message.GroupId);

                if (isRecycleBin)
                {
                    _database.RecycleBinId = Constants.EmptyId;
                }
            }