Пример #1
0
        /// <summary>
        /// Send the open/close message to the dm conversation
        /// </summary>
        /// <param name="title"></param>
        /// <param name="open"></param>
        private void sendClosedMessage(DirectMessageTitle title, bool open)
        {
            DirectMessageMessages msg = new DirectMessageMessages
            {
                message            = open ? "El administrador encargado de la convesación la ha reabierto" : "Esta conversación ha sido cerrada",
                isAdmin            = true,
                DirectMessageTitle = title
            };

            _context.Add(msg);
            title.unreadMessagesForAdmin = 0;
            title.unreadMessagesForUser++;
            title.lastUpdate = DateTime.Now;
        }
Пример #2
0
        /// <summary>
        /// Sends a message to a dm conversation
        /// </summary>
        /// <param name="order">The info to send the message</param>
        /// See <see cref="Areas.DirectMessages.Models.SendDMMessage"/> to know the param structure
        /// <returns>IActionResult of the send message action</returns>
        /// See <see cref="Areas.DirectMessages.Models.DMRoom"/> to know the response structure
        public async Task <IActionResult> sendMsg([FromBody] SendDMMessage order)
        {
            User user = TokenUserManager.getUserFromToken(HttpContext, _context);
            DirectMessageTitle title = new DirectMessageTitle();

            if (!user.open)
            {
                return(BadRequest(new { error = "YoureBanned" }));
            }

            if (!checkOrder(ref title, order.dmId, user))
            {
                return(BadRequest());
            }

            try
            {
                bool isAdmin = AdminPolicy.isAdmin(user, _context);
                DirectMessageMessages msg = new DirectMessageMessages
                {
                    message            = order.message,
                    isAdmin            = isAdmin,
                    DirectMessageTitle = title
                };

                addUnreadMessages(title, isAdmin);
                _context.Add(msg);
                _context.SaveChanges();
                await sendMailAndSendNotification(title, user);

                using (var scope = _scopeFactory.CreateScope())
                {
                    var dbContext = scope.ServiceProvider.GetRequiredService <ApplicationDBContext>();
                    DirectMessageTitle dbTitle = dbContext.DirectMessagesTitle.Where(t => t.id == title.id).First();
                    User dbuser = dbContext.User.Where(u => u.id == user.id).First();

                    DMRoom room = new DMRoom(dbTitle, dbuser, dbContext);
                    return(Ok(room));
                }
            }
            catch (Exception)
            {
                return(StatusCode(500));
            }
        }