private void ModifyTile(AppTile aTile) { var t = aTile.ToTile(); var queryLogicList = this.GenerateQueryLogicFromAppTile(aTile); switch (aTile.Status) { case Enums.ChangeStatus.Add: t.TileQueryLogics = _tileQueryLogicRepository.AddBatchTileQueryLogics(queryLogicList); _tileRepository.AddTile(t); break; case Enums.ChangeStatus.Change: var logics = _tileQueryLogicRepository.AddBatchTileQueryLogics(queryLogicList); t.TileQueryLogics = _tileQueryLogicRepository.ModifyTileQueryLogic(aTile.Id.Value, logics); _tileRepository.ModifyTile(t); break; case Enums.ChangeStatus.Delete: _tileRepository.DeleteTile(t); break; default: throw new ArgumentException("The tile status shall be in Add, Change and Delete"); } }