Example #1
0
        public IActionResult Create()
        {
            var groupInfo = _userHelperService.GetSelectedGroup(User);
            var model     = new EditMessagingViewModel()
            {
                IdGroup = groupInfo.Key,
            };

            ViewBag.IdGroup = groupInfo.Key;
            return(View(nameof(Edit), model));
        }
Example #2
0
        public async Task <IActionResult> SendMessages(EditMessagingViewModel data)
        {
            if (!ModelState.IsValid)
            {
                return(Edit(data));
            }

            var groupInfo = _userHelperService.GetSelectedGroup(User);
            var message   = await DbHelper.AddMessage(_context, groupInfo.Key, data.Message, data.GetVkKeyboard(), data.IsImageFirst, data.Files.Select(x => x.Id));

            long[] userIds = null;

            if (data.IsSelfSend)
            {
                userIds = new long[] { await _userHelperService.GetUserIdVk(User) }
            }
            ;
            //return Json(new { idMessage = message.Id, ids = new long[] { await _userHelperService.GetUserIdVk(User) } });
            else
            {
                userIds = await _context.Subscribers
                          .Where(x => x.IdGroup == groupInfo.Key)
                          .Where(x => x.IsChatAllowed.HasValue && x.IsChatAllowed.Value)
                          .Select(x => x.IdVkUser)
                          .ToArrayAsync();
            }

            await _context.Scheduler_Messaging.AddAsync(new Scheduler_Messaging()
            {
                DtAdd           = DateTime.UtcNow,
                IdMessage       = message.Id,
                Name            = data.Name,
                RecipientsCount = userIds.LongLength,
                Status          = Models.Database.Common.MessagingStatus.Added,
                DtStart         = DateTime.SpecifyKind(DateTime.ParseExact(data.DtStart, "dd.MM.yyyy HH:mm", System.Globalization.CultureInfo.InvariantCulture), DateTimeKind.Local).ToUniversalTime(),
                VkUserIds       = string.Join(',', userIds)
            });

            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }
Example #3
0
 public IActionResult Edit(EditMessagingViewModel data)
 {
     ViewBag.IdGroup = data.IdGroup;
     return(View(data));
 }
Example #4
0
        public async Task <IActionResult> Edit(Guid?idMessaging)
        {
            if (!idMessaging.HasValue)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var messaging = await _context.Scheduler_Messaging
                            .FirstOrDefaultAsync(x => x.Id == idMessaging);

            if (messaging == null)
            {
                return(RedirectToAction(nameof(Index)));
            }

            var groupInfo = _userHelperService.GetSelectedGroup(User);

            var model = new EditMessagingViewModel()
            {
                IdMessage = messaging.IdMessage,
                DtStart   = messaging.DtStart.ToString("dd.MM.yyyy HH:mm"),
                Name      = messaging.Name,
                IdGroup   = groupInfo.Key
            };

            var message = await _context.Messages
                          .Include(x => x.Files)
                          .FirstOrDefaultAsync(x => x.Id == messaging.IdMessage);

            uint idx = 0;

            model.Message      = message.Text;
            model.IsImageFirst = message.IsImageFirst;
            model.Files        = message.Files.Select(x => new FileModel()
            {
                Id    = x.IdFile,
                Name  = _context.Files.Where(y => y.Id == x.IdFile).Select(y => y.Name).FirstOrDefault(),
                Index = idx++
            }).ToList();

            var keyboard = string.IsNullOrWhiteSpace(message.Keyboard) ? null : Newtonsoft.Json.JsonConvert.DeserializeObject <VkNet.Model.Keyboard.MessageKeyboard>(message.Keyboard);

            if (keyboard != null)
            {
                model.Keyboard = new List <List <MessageButton> >();
                byte currentRowIdx = 0;
                foreach (var currentRow in keyboard.Buttons)
                {
                    byte colIdx = 0;
                    model.Keyboard.Add(currentRow.Select(x => new MessageButton()
                    {
                        ButtonColor = x.Color.ToString(),
                        Column      = colIdx++,
                        CanDelete   = colIdx == currentRow.Count(),
                        Row         = currentRowIdx,
                        Text        = x.Action.Label
                    }).ToList());
                    currentRowIdx++;
                }
            }

            ViewBag.IdGroup = groupInfo.Key;
            return(View(model));
        }