示例#1
0
 public ActionResult addMessage(Сообщения m)
 {
     if (!db.Пользователи.ToList().Exists(o => o.Имя == m.Получатель))
     {
         ModelState.AddModelError("Получатель", "Такого пользователя не существует");
     }
     if (ModelState.IsValid)
     {
         db.Сообщения.Add(m);
         db.SaveChanges();
     }
     return(RedirectToAction("Messages"));
 }
示例#2
0
        public async Task SendMessage(string?id, string?text = "", string?friendid = "")
        {
            var UserName = Context.User.Identity.Name;

            if (id == "")
            {
                Беседа беседа = new Беседа
                {
                    ID_Беседы       = Guid.NewGuid(),
                    Дата_создания   = DateTime.Now,
                    Название_беседы = "personal",
                    Описание_беседы = null,
                };
                Участник участник = new Участник
                {
                    ID_беседы                 = беседа.ID_Беседы,
                    Дата_добавления           = DateTime.Now,
                    Дата_последнего_просмотра = DateTime.Now,
                    ID_Пользователя           = Guid.Parse(UserName),
                };
                Участник участник2 = new Участник
                {
                    ID_беседы                 = беседа.ID_Беседы,
                    Дата_добавления           = DateTime.Now,
                    Дата_последнего_просмотра = DateTime.Now,
                    ID_Пользователя           = Guid.Parse(friendid),
                };
                _context.Add(беседа);
                _context.Add(участник);
                _context.Add(участник2);
                List <Участник> участникs = new List <Участник>();
                участникs.Add(участник);
                участникs.Add(участник2);
                Сообщения сообщениеновое = new Сообщения
                {
                    ID_беседы       = беседа.ID_Беседы,
                    ID_Пользователя = Guid.Parse(UserName.ToLower()),
                    Дата_отправки   = DateTime.Now,
                    Текст_сообщения = text
                };
                _context.Add(сообщениеновое);
                Пользователь пользовательновый = _context.Пользователь.FirstOrDefault(t => t.ID == Guid.Parse(UserName));
                _context.SaveChanges();
                foreach (var item in участникs)
                {
                    var covertantId = участникs.FirstOrDefault(t => t.ID_Пользователя != item.ID_Пользователя).ID_Пользователя;
                    var covertant   = _context.Пользователь.FirstOrDefault(t => t.ID == covertantId);
                    try
                    {
                        await Clients.User(item.ID_Пользователя.ToString().ToLower()).SendAsync("MessageSend", new
                        {
                            user_send    = сообщениеновое.ID_Пользователя,
                            conv_id      = сообщениеновое.ID_беседы,
                            conv_name    = covertant.Фамилия + " " + covertant.Имя,
                            conv_user_id = covertant.ID,
                            date         = сообщениеновое.Дата_отправки.Hour + " " + сообщениеновое.Дата_отправки.Minute,
                            text         = сообщениеновое.Текст_сообщения,
                            firstname    = пользовательновый.Имя,
                            secondname   = пользовательновый.Фамилия
                        });
                    }
                    catch (Exception ex)
                    {
                        var a = 1;
                    }
                }
            }
            else
            {
                Сообщения сообщение = new Сообщения
                {
                    ID_беседы       = Guid.Parse(id),
                    ID_Пользователя = Guid.Parse(UserName.ToLower()),
                    Дата_отправки   = DateTime.Now,
                    Текст_сообщения = text
                };
                _context.Add(сообщение);
                Пользователь пользователь = _context.Пользователь.FirstOrDefault(t => t.ID == Guid.Parse(UserName));
                var          members      = _context.Участник.Where(t => t.ID_беседы == Guid.Parse(id)).ToList();
                Беседа       беседа       = _context.Беседа.Include(t => t.Участники).FirstOrDefault(t => t.ID_Беседы == Guid.Parse(id));
                string       conv_name    = "";
                _context.SaveChanges();
                if (беседа.Участники.Count() == 2)
                {
                    foreach (var item in members)
                    {
                        var covertantId = members.FirstOrDefault(t => t.ID_Пользователя != item.ID_Пользователя).ID_Пользователя;
                        var covertant   = _context.Пользователь.FirstOrDefault(t => t.ID == covertantId);
                        if (item.ID_Пользователя.ToString().ToLower() == UserName.ToLower())
                        {
                            await Clients.User(item.ID_Пользователя.ToString().ToLower()).SendAsync("MessageSend", new
                            {
                                flag         = 1,
                                user_send    = сообщение.ID_Пользователя,
                                conv_id      = сообщение.ID_беседы,
                                conv_name    = covertant.Фамилия + " " + covertant.Имя,
                                conv_user_id = covertant.ID,
                                date         = сообщение.Дата_отправки.ToLongDateString(),
                                time         = сообщение.Дата_отправки.Hour + ":" + сообщение.Дата_отправки.Minute,
                                text         = сообщение.Текст_сообщения,
                                firstname    = пользователь.Имя,
                                secondname   = пользователь.Фамилия
                            });
                        }
                        else
                        {
                            await Clients.User(item.ID_Пользователя.ToString().ToLower()).SendAsync("MessageSend", new
                            {
                                user_send    = сообщение.ID_Пользователя,
                                conv_id      = сообщение.ID_беседы,
                                conv_name    = covertant.Фамилия + " " + covertant.Имя,
                                conv_user_id = covertant.ID,
                                date         = сообщение.Дата_отправки.ToLongDateString(),
                                time         = сообщение.Дата_отправки.Hour + ":" + сообщение.Дата_отправки.Minute,
                                text         = сообщение.Текст_сообщения,
                                firstname    = пользователь.Имя,
                                secondname   = пользователь.Фамилия
                            });
                        }
                    }
                }
                else
                {
                    conv_name = беседа.Название_беседы;
                    foreach (var item in members)
                    {
                        var covertantId = members.FirstOrDefault(t => t.ID_Пользователя != item.ID_Пользователя).ID_Пользователя;
                        var covertant   = _context.Пользователь.FirstOrDefault(t => t.ID == covertantId);
                        await Clients.User(item.ID_Пользователя.ToString().ToLower()).SendAsync("MessageSend", new
                        {
                            user_send    = сообщение.ID_Пользователя,
                            conv_id      = сообщение.ID_беседы,
                            conv_name    = covertant.Фамилия + " " + covertant.Имя,
                            conv_user_id = covertant.ID,
                            date         = сообщение.Дата_отправки.ToLongDateString(),
                            time         = сообщение.Дата_отправки.Hour + ":" + сообщение.Дата_отправки.Minute,
                            text         = сообщение.Текст_сообщения,
                            firstname    = пользователь.Имя,
                            secondname   = пользователь.Фамилия
                        });
                    }
                }
            }
        }
示例#3
0
        public ActionResult addMessage()
        {
            Сообщения s = new Сообщения();

            return(View(s));
        }