Bonjour,
Je travaille sur une messagerie type plateforme de ventes.
Un acheteur peut contacter un vendeur au sujet d'un produit.
Son message concerne un produit en particulier.
L'échange de messages n'est possible qu'entre un acheteur et le propriétaire du produit, et concernera uniquement le produit en question.
Les échanges sont enregistrés en DB.
Model :
User_Exp, User_Dest et Article sont des Foreign Key
Au chargement de la vue "Messages", je récupère l'historique des échanges :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21public class MessagesModel { public long Id { get; set; } public ApplicationUser User_Exp { get; set; } public ApplicationUser User_Dest { get; set; } public Articles Article { get; set; } public string Message { get; set; } public messageStatus Status { get; set; } public DateTime Created_at { get; set; } public enum messageStatus { Sent, Delivered } public MessagesModel() { Status = messageStatus.Sent; } }
Le controller :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13function getChat() { $.ajax({ url: '@Url.Action("ConversationWithContact", "Messagerie")', type: 'GET', cache: false, data: {articleId: '@Html.DisplayTextFor(model => model.Id)'}, }) .done( function(resp) { var chat_data = resp.data || []; loadChat( chat_data ); }); };
C'est là que le problème arrive.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public JsonResult ConversationWithContact(long articleId) { ApplicationUser currentUser = _repo.GetUser(); Articles item = _repo.GetArticleByID(articleId); var conversations = new List<Models.Messages.MessagesModel>(); conversations = _context.Messages. Where(c => (c.Article.Id == item.Id) && (c.User_Dest.Id == currentUser.Id || c.User_Exp.Id == currentUser.Id)) .OrderBy(c => c.Created_at) .ToList(); return Json(new { status = "success", data = conversations }); }
Pour l'exemple j'ai 2 users, Titi et Toto, et un vendeur.
Titi et Toto ont envoyé chacun un message au vendeur concernant le même produit.
"conversations" renvoie une valeur NULL pour User_Exp alors que la valeur est présente dans la DB.
Le problème se produit dans le controller.
Cela se produit pour chaque message pour lequel le user qui utilise la messagerie n'est pas l'expéditeur.
Quand c'est le DESTINATAIRE (en l’occurrence le propriétaire du produit) qui utilise la messagerie, chaque User_Exp est NULL.
Pour Titi, c'est les messages de Toto qui ont user_Exp = NULL.
Et pour Toto, ce sont ceux de Titi :
J'ai absolument besoin de l'info user_Exp pour ensuite trier les messages.
Je n'arrive pas à comprendre ce problème.
C'est peut-être juste un problème de logique, mais je ne le comprends pas.
Merci











Répondre avec citation
Partager