public Result <PostingItem> Save(PostingItem entity) { switch (entity.EntityState) { case ItemState.Added: return(_repositoryCommand.Save(entity).Bind(id => _repositoryQuery.GetById(id)) .Bind <PostingItem>(item => _serviceDetails.AddItemDetails(item))); case ItemState.Modified: return(GetById(entity.Id)); case ItemState.Delete: return(Result <PostingItem> .Fail <PostingItem>("Not Implemented Exception on Delete state")); case ItemState.Unchanged: return(Result <PostingItem> .Fail <PostingItem>("Not Implemented Exception on Unchanged state")); default: return(Result <PostingItem> .Fail <PostingItem>("Wrong entity state")); } }