예제 #1
0
        public async Task <CommandResult <ListMessageResult> > Messages(
            [FromServices] ListMessageCommand listMessageCommand, TypeBox typeBox, string id)
        {
            var            queryString = Request.Query.ToDictionary(q => q.Key, q => q.Value);
            MessagesFilter messagesFilter;

            if (queryString.ContainsKey("f"))
            {
                var f = queryString["f"];
                messagesFilter = JsonConvert.DeserializeObject <MessagesFilter>(f);
            }
            else
            {
                messagesFilter = new MessagesFilter();
            }

            var sendMessageInput =
                new ListMessageInput {
                BoxId = new BoxId {
                    Id = id, Type = typeBox
                }, Filter = messagesFilter
            };
            var userInput = new UserInput <ListMessageInput>
            {
                UserId = User.Identity.IsAuthenticated ? User.GetUserId() : string.Empty,
                Data   = sendMessageInput
            };

            var result =
                await Business
                .InvokeAsync <ListMessageCommand, UserInput <ListMessageInput>, CommandResult <ListMessageResult> >(
                    listMessageCommand, userInput);

            return(result);
        }
        protected override void LoadViewState(object savedState)
        {
            Pair p = (Pair)savedState;

            base.LoadViewState(p.First);
            filt = (MessagesFilter)p.Second;
        }
예제 #3
0
        public ReadOnlyCollection<Message> Get(
            MessageType type,
            out int totalCount,
            int? count = null,
            int? offset = null,
            DateTime? timeOffset = null,
            MessagesFilter? filter = null,
            int? previewLength = null,
            long? lastMessageId = null)
        {
            VkErrors.ThrowIfNumberIsNegative(() => count);
            VkErrors.ThrowIfNumberIsNegative(() => offset);
			VkErrors.ThrowIfNumberIsNegative(() => previewLength);
			VkErrors.ThrowIfNumberIsNegative(() => lastMessageId);

            var parameters = new VkParameters
                             {
                                 { "out", type },
                                 { "offset", offset },
                                 { "count", count },
                                 { "time_offset", timeOffset},
                                 { "filters", filter },
                                 { "preview_length", previewLength },
                                 { "last_message_id", lastMessageId }
                             };

            VkResponse response = _vk.Call("messages.get", parameters);
            totalCount = response["count"];

            VkResponseArray items = response["items"];
            return items.ToReadOnlyCollectionOf<Message>(item => item);
        }
        public override Message[] GetMessages(MessagesFilter filter)
        {
            List <Message> messages = new List <Message>();
            string         command  = null;

            if (filter.ReguiredProblemID)
            {
                command = "SELECT * FROM Messages WHERE ProblemID = @pid AND Type = @type";
            }
            else
            {
                command = "SELECT Messages.ID,Messages.ProblemID,Messages.UserID,Messages.Time,Messages.Type," +
                          "Messages.ContestantMessage,Messages.JuryMessage FROM Messages,Contests,Problems " +
                          "WHERE Messages.Type = @type AND Messages.ProblemID = Problems.ID AND Problems.ContestID = Contests.ID AND Contests.ID = @cid";
            }
            if (filter.RequiredEmptyJuryMessage)
            {
                command += " AND Messages.JuryMessage = ''";
            }
            else
            {
                command += " AND Messages.JuryMessage != ''";
            }
            if (filter.RequiredUserID)
            {
                command += " AND Messages.UserID=@uid";
            }
            using (MsSqlQuery q = new MsSqlQuery(_connectionString))
                using (SqlDataReader rdr = q.ExecuteReader(command, delegate(SqlCommand comm, object customParam)
                {
                    comm.Parameters.AddWithValue("@type", filter.Type.ToString());
                    comm.Parameters.AddWithValue("@pid", filter.ProblemID);
                    comm.Parameters.AddWithValue("@cid", filter.ContestID);
                    if (filter.RequiredUserID)
                    {
                        comm.Parameters.AddWithValue("@uid", filter.UserID);
                    }
                }, null))
                    while (rdr.Read())
                    {
                        messages.Add(FromReader(rdr));
                    }
            return(messages.ToArray());
        }
예제 #5
0
 /// <summary>Main widget destroyed handler</summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void MainWidgetDestroyed(object sender, EventArgs e)
 {
     try
     {
         btnJumpToSimLog.Clicked -= OnJumpToSimulationLog;
         captureRules.Dispose();
         VerbosityDropDown.Dispose();
         MessagesFilter.Dispose();
         simulationFilter.Dispose();
         SimulationDropDown.Dispose();
         mainControl.Dispose();
         ((ViewBase)SummaryDisplay).Dispose();
         mainWidget.Destroyed -= MainWidgetDestroyed;
         owner = null;
     }
     catch (Exception err)
     {
         ShowError(err);
     }
 }
예제 #6
0
        public ReadOnlyCollection<Message> GetAll(
            MessageType type,
            out int totalCount,
            TimeSpan? timeOffset = null,
            MessagesFilter? filter = null,
            int? previewLength = null,
            long? lastMessageId = null)
        {
            const int count = 200;
            var i = 0;
            var result = new List<Message>();

            do
            {
                var currentItems = _messages.Get(type, out totalCount, count, i * count, timeOffset, filter, previewLength, lastMessageId);
                if (currentItems != null) result.AddRange(currentItems);
            } while (++i * count < (_vk.CountFromLastResponse ?? 0));

            return result.ToReadOnlyCollection();
        }
예제 #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!User.IsInRole("Judge") && !User.IsInRole("User"))
            {
                throw new NeJudgeSecurityException("User, Judge");
            }
            if (!IsPostBack)
            {
                RequirementsProcessor rp = new RequirementsProcessor(GetType());
                rp.ProcessRequirements();

                //Page.Response.AddHeader("Refresh", "90");
                MessagesFilter mf = new MessagesFilter(rp.ContestIDDefined?rp.ContestID:0, MessageType.Question);
                if (rp.UserIDDefined && User.IsInRole("Judge"))
                {
                    mf.UserID = rp.UserID;
                }
                mf.RequiredEmptyJuryMessage =
                    Request.QueryString["answered"] == null ||
                    Request.QueryString["answered"].ToLower() != "true";
                if (rp.ContestIDDefined)
                {
                    if (Contest.GetContest(rp.ContestID).Time == ContestTime.Forthcoming)
                    {
                        throw new NeJudgeInvalidParametersException("contestID", "Нельзя просмотреть вопросы будущего соревнования");
                    }

                    mf.ContestID   = rp.ContestID;
                    mf.ProblemID   = (rp.ProblemIDDefined) ? rp.ProblemID : 0;
                    selmess.Filter = mf;

                    questionsGV.Columns[6].Visible = User.IsInRole("Judge");
                    Bind();
                }
                else
                {
                    questionsGV.Visible = false;
                    selmess.Filter      = mf;
                }
            }
        }
예제 #8
0
        public ReadOnlyCollection<Message> Get(
            MessageType type,
            out int totalCount,
            uint? count = 20,
            uint? offset = null,
            TimeSpan? timeOffset = null,
            MessagesFilter? filter = null,
            uint? previewLength = 0,
            long? lastMessageId = null)
        {
            var parameters = new MessagesGetParams
            {
                Out = type,
                Offset = offset,
                Filters = filter,
                PreviewLength = previewLength,
                LastMessageId = lastMessageId
            };

            var response = _vk.Call("messages.get", parameters);
            totalCount = response["count"];

            return Get(parameters).Messages;
        }
예제 #9
0
 private Log()
 {
     MessagesToOutput = MessagesFilter.All;
 }
예제 #10
0
        public ReadOnlyCollection<Message> Get(
            MessageType type,
            out int totalCount,
            int? count = null,
            int? offset = null,
            MessagesFilter? filter = null,
            int? previewLength = null,
            DateTime? startDate = null)
        {
            var parameters = new VkParameters
                             {
                                 { "out", type },
                                 { "offset", offset },
                                 { "count", count },
                                 { "filters", filter },
                                 { "preview_length", previewLength },
                                 { "time_offset", startDate }
                             };

            VkResponseArray response = _vk.Call("messages.get", parameters);

            totalCount = response[0];

            return response.Skip(1).ToReadOnlyCollectionOf<Message>(r => r);
        }
 public void SetMessagesFilter(MessagesFilter filter)
 {
     this.filter = filter;
 }
예제 #12
0
 public abstract Message[] GetMessages(MessagesFilter filter);
예제 #13
0
        /// <summary>
        /// возвращает список сообщений с разбивкой по темам
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        public Paged <MessagesTheme> GetMessages(MessagesFilter filter)
        {
            Paged <MessagesTheme> result = new Paged <MessagesTheme>();

            using (var db = new CMSdb(_context))
            {
                var query      = db.msg_messages.Where(w => w.f_parent == null && w.f_site == _siteId);
                int itemsCount = query.Count();
                var q          = query.Select(s => new MessagesTheme
                {
                    Id    = s.id,
                    Theme = s.c_theme,
                    //View = (s.b_admin) ? s.b_views : true,
                    Date        = (from d in db.msg_messages where d.f_parent == s.id || d.id == s.id orderby d.d_date descending select d.d_date).FirstOrDefault(),
                    AllCount    = (from a in db.msg_messages where a.f_parent == s.id || a.id == s.id select a.id).Count(),
                    NewMsgCount = (from a in db.msg_messages where (a.f_parent == s.id || a.id == s.id) && (a.b_views == false && a.b_admin == false) select a.id).Count(),
                });



                if (filter.ViewMessages != null && filter.ViewMessages == true)
                {
                    q = q.Where(w => w.NewMsgCount > 0);
                }

                if (filter.Date.HasValue)
                {
                    q = q.Where(s => s.Date > filter.Date.Value);
                }
                if (filter.DateEnd.HasValue)
                {
                    q = q.Where(s => s.Date < filter.DateEnd.Value.AddDays(1));
                }


                if (!String.IsNullOrWhiteSpace(filter.SearchText))
                {
                    string[] search = filter.SearchText.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    if (search != null && search.Count() > 0)
                    {
                        foreach (string p in filter.SearchText.Split(' '))
                        {
                            if (!String.IsNullOrWhiteSpace(p))
                            {
                                q = q.Where(w => w.Theme.Contains(p));
                            }
                        }
                    }
                }
                q = q.OrderByDescending(d => d.Date);
                var list = q.Skip(filter.Size * (filter.Page - 1))
                           .Take(filter.Size)
                           .ToArray();

                return(new Paged <MessagesTheme>
                {
                    Items = list,
                    Pager = new PagerModel
                    {
                        PageNum = filter.Page,
                        PageSize = filter.Size,
                        TotalCount = itemsCount
                    }
                });
            }
        }
예제 #14
0
        public ReadOnlyCollection<Message> Get(
            MessageType type,
            out int totalCount,
            uint? count = 20,
            uint? offset = null,
            TimeSpan? timeOffset = null,
            MessagesFilter? filter = null,
            uint? previewLength = 0,
            ulong? lastMessageId = null)
        {
            var parameters = new VkParameters
            {
                { "out", type },
                { "offset", offset },
                { "filters", filter },
                { "preview_length", previewLength },
                { "last_message_id", lastMessageId }
            };
            if (count <= 200)
            {
                parameters.Add("count", count);
            }
            if (timeOffset.HasValue)
            {
                parameters.Add("time_offset", timeOffset.Value.TotalSeconds);
            }
            var response = _vk.Call("messages.get", parameters);
            totalCount = response["count"];

            return response["items"].ToReadOnlyCollectionOf<Message>(item => item);
        }
 public void SetMessagesFilter(MessagesFilter filter)
 {
     this.filter = filter;
 }