public ElasticResult <ElasticChatUser> Add(string chatGuid, string userGuid) { var chatUser = new ElasticChatUser(chatGuid, userGuid); var response = CheckChatUser(chatUser); return(!response.Success ? response : _entityRepository.Add(EsType, chatUser)); }
private ElasticResult <ElasticChatUser> CheckChatUser(ElasticChatUser chatUser) { var searchDescriptor = new SearchDescriptor <ElasticChatUser>().Query( q => q.Bool( b => b.Must( m => m.Term(t => t.Field(f => f.ChatGuid).Value(chatUser.ChatGuid)), m => m.Term(t => t.Field(f => f.UserGuid).Value(chatUser.UserGuid))))) .Index(_elasticRepository.EsIndex) .Type(EsType); var response = _elasticRepository.ExecuteSearchRequest(searchDescriptor); // If request well executed. And user is unique. if (response.Success && !response.Response.Hits.Any()) { return(ElasticResult <ElasticChatUser> .SuccessResult(chatUser)); } return(response.Success ? ElasticResult <ElasticChatUser> .FailResult("User in this chat already!") : ElasticResult <ElasticChatUser> .FailResult(response.Message)); }