/// <summary> /// Checks if valid message and reciver /// </summary> /// <param name="messageInfo"></param> public static Boolean AddMessage(MessageInfo messageInfo) { var messages = new List <Message>(); var recivers = messageInfo.ReceiverId.Split("; "); var users = UserBL.GetUsers(); var groups = GroupBL.GetGroupsInternal(); recivers = recivers.Distinct().ToArray(); foreach (var r in recivers) { //recivers = recivers.Distinct().ToList(); if (r.Equals("")) { continue; } ///Check if it's a group and it exists if (groups.ToList().Exists(ug => ug.UserGroups.ToList().Exists(g => g.Group.Name.Equals(r)))) { var currentG = groups.ToList().Find(g => g.Name.Equals(r)); var sender = UserBL.GetUser(messageInfo.SenderId); foreach (var rg in currentG.UserGroups) { var reciver = rg.UserId; if (messageInfo.SenderId.Equals(reciver)) { continue; } //if (messages.Exists(m => m.ReciverId.Equals(rg.UserId))) //continue; var title = messageInfo.Title + " [" + sender.Email + "]"; messages.Add(createMessage(messageInfo, reciver, title, currentG)); } } ///Checks if it's a user and it exits else if (users.ToList().Exists(u => u.Email.Equals(r))) { var reciver = UserBL.GetUserWithEmail(r).Id; if (messageInfo.SenderId.Equals(reciver)) { continue; } if (messages.Exists(m => m.ReciverId.Equals(reciver))) { continue; } messages.Add(createMessage(messageInfo, reciver)); } else { continue; } } //If threre are no recipients, return false if (messages.Count == 0) { return(false); } MessageDAL.AddMessageToDB(messages); return(true); }