Пример #1
0
        private CarouselMessage GetCarouselMsg(string strConn, LineEvents lineEvent, LineChannel channelObj)
        {
            var actions = new NewLineMessageApi.LineActions.DatetimeAction("統計資料日期", DateTimePickerType.date);

            using (var conn = new SQLiteConnection(strConn))
            {
                conn.Open();
                string sql     = "select SpeakDate from LineUserSpeak order by SpeakDate desc   ";
                var    endDate = conn.QueryFirstOrDefault <DateTime>(sql);
                sql = "select SpeakDate from LineUserSpeak order by SpeakDate  ";
                var beginDate = conn.QueryFirstOrDefault <DateTime>(sql);
                actions.min   = beginDate.ToString("yyyy-MM-dd");
                actions.max   = endDate.ToString("yyyy-MM-dd");
                actions.label = "要查看的日期";
            }
            var lstAction = new List <NewLineMessageApi.LineActions.LineActionsBase>()
            {
                actions
            };
            var col = new NewLineMessageApi.TemplatesMsg.ColumnObj.CarouselColumn("選擇完日期後送出", lstAction);

            var lstColumns = new List <NewLineMessageApi.TemplatesMsg.ColumnObj.CarouselColumn>()
            {
                col
            };

            return(new CarouselMessage(lstColumns));
        }
Пример #2
0
        public LineUserSpeak(LineEvents lineEvent, LineChannel channelObj)
        {
            UserProfile userData = new UserProfile();

            switch (lineEvent.source.type)
            {
            case SourceType.user:
                userData = channelObj.GetUserProfile(lineEvent.source.userId);
                break;

            case SourceType.group:
                userData     = channelObj.GetGroupOrRoomUserProfile(lineEvent.source.userId, lineEvent.source.groupId, SourceType.group);
                this.Groupid = lineEvent.source.groupId;
                break;

            case SourceType.room:
                userData     = channelObj.GetGroupOrRoomUserProfile(lineEvent.source.userId, lineEvent.source.roomId, SourceType.room);
                this.Groupid = lineEvent.source.roomId;
                break;
            }
            this.DisplayName = userData.displayName;
            this.UserId      = userData.userId;
            if (lineEvent.message != null)
            {
                this.MessageType = lineEvent.message.type.ToString();
            }
            this.SpeakDate = DateTime.UtcNow.AddHours(8);
        }
Пример #3
0
        public IHttpActionResult Post()
        {
            LineChannel ChannelObj = null;
            LineEvents  LineEvent  = null;

            if (ChannelObj == null)
            {
                if (LineChannel.VaridateSignature(Request, Channel_secret))
                {
                    ChannelObj = new LineChannel(Channel_Access_Token);
                    LineEvent  = JsonConvert.DeserializeObject <LineReceivedMsg>(Request.Content.ReadAsStringAsync().Result).events.FirstOrDefault();
                }
            }

            if (ChannelObj == null)
            {
                return(BadRequest());
            }

            if (LineEvent != null)
            {
                Models.LineUserSpeak dbModel = new Models.LineUserSpeak(LineEvent, ChannelObj);
                switch (LineEvent.type)
                {
                case EventType.message:

                    if (LineEvent.message.type == MessageType.text)
                    {
                        string strLineMsg = LineEvent.message.text;
                        if (strLineMsg == "$統計")
                        {
                            /*GET DATA*/
                            string msg = dbModel.GetReportsDefault(strConn);
                            ChannelObj.SendReplyMessage(LineEvent.replyToken, new NewLineMessageApi.MessageObj.TextMessage(msg));
                            dbModel = null;
                        }
                        else if (strLineMsg == "$功能" || strLineMsg.ToLower() == "$menu")
                        {
                            NewLineMessageApi.TemplatesMsg.CarouselMessage msgObj = GetCarouselMsg(strConn, LineEvent, ChannelObj);
                            ChannelObj.SendReplyMessage(LineEvent.replyToken, new NewLineMessageApi.MessageObj.TemplateMessage()
                            {
                                altText = "我要查資料", template = msgObj
                            });
                            dbModel = null;
                        }
                    }
                    if (dbModel != null)
                    {
                        /*save*/
                        dbModel.Save(strConn);
                    }
                    break;

                case EventType.follow:
                    break;

                case EventType.unfollow:
                    break;

                case EventType.join:
                    switch (LineEvent.source.type)
                    {
                    case SourceType.user:
                        break;

                    case SourceType.group:
                        if (LineEvent.source.groupId != "123")
                        {
                            ChannelObj.Leave(LineEvent.source.groupId, SourceType.group);
                        }
                        break;

                    case SourceType.room:
                        ChannelObj.Leave(LineEvent.source.roomId, SourceType.room);
                        break;

                    default:
                        break;
                    }
                    break;

                case EventType.leave:
                    break;

                case EventType.postback:
                    if (LineEvent.postback.data == "統計資料日期")
                    {
                        if (LineEvent.postback.Params != null)
                        {
                            var time = LineEvent.postback.Params.date;
                            if (time.HasValue)
                            {
                                ChannelObj.SendReplyMessage(LineEvent.replyToken, new NewLineMessageApi.MessageObj.TextMessage(dbModel.GetReportsDefault(strConn, time.Value)));
                            }
                        }
                    }

                    break;

                case EventType.beacon:
                    break;

                default:
                    break;
                }
            }
            return(Ok());
        }