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));
        }