示例#1
0
        private Intent_Request MakeIntent_Request(DataRow row)
        {
            Intent_Request record = new Intent_Request();

            if (row != null)
            {
                record.SetProperty(row);
            }
            return(record);
        }
示例#2
0
 private void btnAdd_Click(object sender, EventArgs e)
 {
     using (FormEditIntent_Request form = new FormEditIntent_Request(null, mListData_Flat))
     {
         if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             mIntent_Request = form.mIntent_Request;
             DoRefresh();
         }
     }
 }
示例#3
0
        public Intent_Response GetIntent_Response(Intent_Request mIntent_Request)
        {
            StringBuilder sql = new StringBuilder();

            sql.Append(" SELECT * ");
            sql.Append(" FROM tb_intent_response ");
            sql.Append(" WHERE DM_Intent_TypeID = " + mIntent_Request.DM_Intent_TypeID.Escape() + " AND DM_Entity_TypeID = " + mIntent_Request.DM_Entity_TypeID.Escape());
            sql.Append(" ORDER BY random() limit 10 ");
            DataRow row = baseDAO.DoGetDataRow(sql.ToString());

            return(MakeIntent_Response(row));
        }
示例#4
0
        private void mListViewData_FormatRow(object sender, FormatRowEventArgs e)
        {
            Intent_Request data = e.Model as Intent_Request;

            if (data != null)
            {
                if (data.Intent_RequestID <= 0)
                {
                    e.Item.Font = new System.Drawing.Font(e.Item.Font, System.Drawing.FontStyle.Bold);
                }
            }
        }
示例#5
0
 public int DeleteIntent_Request(Intent_Request data)
 {
     lock (lockObject)
     {
         if (data == null)
         {
             return(DataTypeModel.RESULT_NG);
         }
         StringBuilder sql = new StringBuilder();
         sql.Append(" DELETE FROM tb_intent_request  ");
         sql.Append("  WHERE Intent_RequestID = " + DatabaseUtility.Escape(data.Intent_RequestID));
         return(baseDAO.DoUpdate(sql.ToString()));
     }
 }
示例#6
0
        private void btnXoa_Click(object sender, EventArgs e)
        {
            Intent_Request data = mListViewData.SelectedObject as Intent_Request;

            if (data != null && data.Intent_RequestID > 0)
            {
                if (SanitaMessageBox.Show("Bạn có chắc chắn muốn xóa không ?", "Thông Báo", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                    if (Intent_RequestPresenter.DeleteIntent_Request(data) > 0)
                    {
                        DoRefresh();
                    }
                }
            }
        }
示例#7
0
        private void mListViewData_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            Intent_Request data = mListViewData.SelectedObject as Intent_Request;

            if (data != null && data.Intent_RequestID > 0)
            {
                using (FormEditIntent_Request form = new FormEditIntent_Request(data, mListData_Flat))
                {
                    if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        mIntent_Request = form.mIntent_Request;
                        DoRefresh();
                    }
                }
            }
        }
示例#8
0
        public String ExecuteCommand(Intent_Request data)
        {
            if (data.DM_Entity_TypeID == 0)
            {
                data.DM_Entity_TypeID = DM_Entity_Type.KE_CHUYEN_CUOI;
            }

            //Lấy response
            Intent_Response mIntent_Response = Intent_ResponsePresenter.GetIntent_Response_Request(data);
            String          response_data    = mIntent_Response.Data;

            response_data = response_data ?? "";

            //Response
            return(response_data);
        }
示例#9
0
        private void btnCopy_Click(object sender, EventArgs e)
        {
            Intent_Request data = mListViewData.SelectedObject as Intent_Request;

            if (data != null && data.Intent_RequestID > 0)
            {
                Intent_Request mDataNew = ObjectCopier.Clone(data);
                mDataNew.Intent_RequestID = 0;
                using (FormEditIntent_Request form = new FormEditIntent_Request(mDataNew, mListData_Flat))
                {
                    if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        mIntent_Request = form.mIntent_Request;
                        DoRefresh();
                    }
                }
            }
        }
示例#10
0
        public FormEditIntent_Request(Intent_Request _mIntent_Request, IList <Intent_Request> _mListIntent_Request)
        {
            InitializeComponent();
            this.Translate();
            this.UpdateUI();
            base.DoInit();

            //Create worker
            mThread = new ExBackgroundWorker();
            mThread.WorkerReportsProgress      = true;
            mThread.WorkerSupportsCancellation = true;
            mThread.ProgressChanged           += new ProgressChangedEventHandler(bwAsync_WorkerChanged);
            mThread.RunWorkerCompleted        += new RunWorkerCompletedEventHandler(bwAsync_WorkerCompleted);
            mThread.DoWork += new DoWorkEventHandler(bwAsync_Worker);

            mIntent_Request     = _mIntent_Request ?? new Intent_Request();
            mListIntent_Request = _mListIntent_Request;
        }
示例#11
0
        public String XuLyRequest(Intent_Request data)
        {
            var type  = typeof(ICommand);
            var types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(s => s.GetTypes()).Where(p => type.IsAssignableFrom(p));

            foreach (Type m_type in types)
            {
                var field = m_type.GetProperty("Instance", BindingFlags.Public | BindingFlags.Static);
                if (field != null)
                {
                    var value = (ICommand)field.GetValue(null, null);
                    if (value != null)
                    {
                        if (value.DM_Intent_TypeID == data.DM_Intent_TypeID)
                        {
                            return(value.ExecuteCommand(data));
                        }
                    }
                }
            }

            return("");
        }
示例#12
0
        public int InsertIntent_Request(IDbConnection connection, IDbTransaction trans, Intent_Request data)
        {
            lock (lockObject)
            {
                if (data == null)
                {
                    return(DataTypeModel.RESULT_NG);
                }

                String data_request = data.Data;
                data_request = data_request ?? "";
                data_request = System.Text.RegularExpressions.Regex.Replace(data_request, @"<[^>]+>", "");
                data_request = data_request.TrimSpace().Trim();

                StringBuilder sql = new StringBuilder();
                sql.Append(" INSERT INTO tb_intent_request (");
                sql.Append("            IntentID,");
                sql.Append("            Data,");
                sql.Append("            Data_Query,");
                sql.Append("            DM_Entity_TypeID,");
                sql.Append("            Current_DM_Intent_TypeID,");
                sql.Append("            Current_DM_Entity_TypeID,");
                sql.Append("            DM_Intent_TypeID)");
                sql.Append("  VALUES( ");
                sql.Append("          " + data.IntentID.Escape()).Append(", ");
                sql.Append("          " + data.Data.Escape()).Append(", ");
                sql.Append("          " + data_request.Escape_TSQuery()).Append(", ");
                sql.Append("          " + data.DM_Entity_TypeID.Escape()).Append(", ");
                sql.Append("          " + data.Current_DM_Intent_TypeID.Escape()).Append(", ");
                sql.Append("          " + data.Current_DM_Entity_TypeID.Escape()).Append(", ");
                sql.Append("          " + data.DM_Intent_TypeID.Escape()).Append(") ");
                int newId = baseDAO.DoInsert(connection, trans, sql.ToString());
                data.Intent_RequestID = newId;
                if (newId > 0)
                {
                    return(newId);
                }
                else
                {
                    return(DataTypeModel.RESULT_NG);
                }
            }
        }
示例#13
0
        public API_TroLyAoData_Out TroLyAo_Execute(API_TroLyAoData_In data)
        {
            //Output
            API_TroLyAoData_Out mAPI_TroLyAoData_Out = new API_TroLyAoData_Out();

            mAPI_TroLyAoData_Out.Language = "vi-VN";

            //Kiểm tra data
            if (data == null)
            {
                mAPI_TroLyAoData_Out.Data = "Bạn hãy hỏi gì đi...";
                mAPI_TroLyAoData_Out.ID   = Sanita.Utility.Encryption.CryptorEngine.CreateMD5Hash(mAPI_TroLyAoData_Out.Data);
                return(mAPI_TroLyAoData_Out);
            }

            //Kiểm tra device
            Device mDevice = DevicePresenter.GetDevice(data.DeviceID);

            if (mDevice.DeviceID <= 0)
            {
                mAPI_TroLyAoData_Out.Data = "Thiết bị của bạn chưa được đăng ký.";
                mAPI_TroLyAoData_Out.ID   = Sanita.Utility.Encryption.CryptorEngine.CreateMD5Hash(mAPI_TroLyAoData_Out.Data);
                return(mAPI_TroLyAoData_Out);
            }

            //Kiểm tra user
            User mUser = UserPresenter.GetUser(mDevice.UserID);

            if (mUser.APIKey != data.API_Key)
            {
                mAPI_TroLyAoData_Out.Data = "API key không đúng.";
                mAPI_TroLyAoData_Out.ID   = Sanita.Utility.Encryption.CryptorEngine.CreateMD5Hash(mAPI_TroLyAoData_Out.Data);
                return(mAPI_TroLyAoData_Out);
            }

            if (!MyVar.mListDevice.Any(p => p.DeviceID == mDevice.DeviceID))
            {
                MyVar.mListDevice.Add(mDevice);
            }
            mDevice       = MyVar.mListDevice.FirstOrDefault(p => p.DeviceID == mDevice.DeviceID);
            mDevice.mUser = mUser;

            //Xử lý input
            data.Data = XuLyDuLieu(data.Data);

            //Lấy danh sách request
            IList <Intent_Request> mListRequest = Intent_RequestPresenter.GetIntent_Requests(data.Data);

            //Lọc theo bối cảnh hiện tại
            IList <Intent_Request> mListRequest_Current = mListRequest.Where(p => p.Current_DM_Entity_TypeID == mDevice.Current_DM_Entity_TypeID && p.Current_DM_Intent_TypeID == mDevice.Current_DM_Intent_TypeID).ToList();

            if (mListRequest_Current.Count == 0)
            {
                mListRequest_Current = mListRequest.Where(p => p.Current_DM_Entity_TypeID == 0 && p.Current_DM_Intent_TypeID == 0).ToList();
            }
            if (mListRequest_Current.Count > 0)
            {
                mListRequest = mListRequest_Current;
            }

            //Sắp xếp
            IList <Intent_Request> mListRequest_NoneParam = mListRequest.Where(p => !p.Data.Contains("<") && !p.Data.Contains(">")).OrderByDescending(p => p.Data.Length).ToList();
            IList <Intent_Request> mListRequest_Param     = mListRequest.Where(p => p.Data.Contains("<") && p.Data.Contains(">")).OrderByDescending(p => p.Data.Length).ToList();

            mListRequest = mListRequest_NoneParam.Concat(mListRequest_Param).ToList();

            Intent_Request mIntent_Request = new Intent_Request();

            foreach (Intent_Request request in mListRequest)
            {
                String request_data = request.Data;
                request_data = request_data ?? "";
                request_data = request_data.Replace("<*>", "(.*)");
                request_data = request_data.Replace("<", "(?<");
                request_data = request_data.Replace(">", ">(.+))");
                request_data = "^" + request_data + "$";

                Regex mRegex = new Regex(request_data, RegexOptions.IgnoreCase | RegexOptions.Singleline);

                if (mRegex.IsMatch(data.Data))
                {
                    mIntent_Request = request;
                    mDevice.Current_DM_Intent_TypeID = mIntent_Request.DM_Intent_TypeID;
                    mDevice.Current_DM_Entity_TypeID = mIntent_Request.DM_Entity_TypeID;

                    GroupCollection groups = mRegex.Match(data.Data).Groups;

                    foreach (string groupName in mRegex.GetGroupNames())
                    {
                        EntityParam mEntityParam = new EntityParam();
                        mEntityParam.Name  = groupName;
                        mEntityParam.Value = groups[groupName].Value;
                        mIntent_Request.mListParam.Add(mEntityParam);
                    }
                }
            }

            //Set device
            mIntent_Request.mDevice = mDevice;

            //Xử lý request
            String response_request = XuLyRequest(mIntent_Request);

            if (!String.IsNullOrEmpty(response_request))
            {
                mAPI_TroLyAoData_Out.Data = response_request;
                mAPI_TroLyAoData_Out.ID   = Sanita.Utility.Encryption.CryptorEngine.CreateMD5Hash(mAPI_TroLyAoData_Out.Data);
                return(mAPI_TroLyAoData_Out);
            }

            //Get response
            Intent_Response mIntent_Response = Intent_ResponsePresenter.GetIntent_Response_Request(mIntent_Request);

            if (String.IsNullOrEmpty(mIntent_Response.Data))
            {
                mIntent_Response.Data = "Xin lỗi... Tôi không hiểu !";
            }

            //Update global
            if (mIntent_Response.Data.Contains("<") && mIntent_Response.Data.Contains(">"))
            {
                mIntent_Response.Data.Replace("<thoi_gian_hien_tai>", String.Format("{0:HH:mm}", SystemInfo.NOW));
                mIntent_Response.Data.Replace("<ngay_hien_tai>", String.Format("{0:dd/MM/yyyy}", SystemInfo.NOW));
                mIntent_Response.Data.Replace("<thu_hien_tai>", String.Format("{0}", SystemInfo.NOW.GetThu()));
                mIntent_Response.Data.Replace("<ngay_mai>", String.Format("{0:dd/MM/yyyy}", SystemInfo.NOW.AddDays(1)));
                mIntent_Response.Data.Replace("<thu_mai>", String.Format("{0}", SystemInfo.NOW.AddDays(1).GetThu()));
            }

            //Return
            mAPI_TroLyAoData_Out.Data = mIntent_Response.Data;
            mAPI_TroLyAoData_Out.ID   = Sanita.Utility.Encryption.CryptorEngine.CreateMD5Hash(mAPI_TroLyAoData_Out.Data);
            return(mAPI_TroLyAoData_Out);

#if false
            //Check
            if (data.Data.Contains("thời tiết") && data.Data.Contains("hôm nay"))
            {
                String thu = "";
                if (SystemInfo.NOW.DayOfWeek == DayOfWeek.Sunday)
                {
                    thu = String.Format("chủ nhật");
                }
                else
                {
                    thu = String.Format("thứ {0}", (int)SystemInfo.NOW.DayOfWeek + 1);
                }

                mAPI_TroLyAoData_Out.Data = String.Format("Dự báo thời tiết hôm nay ở Quan Khê, Hải Dương {0} ngày {1:dd/MM} có mưa rào nhẹ, nhiệt độ từ 26 đến 32 độ, độ ẩm 94%", thu, SystemInfo.NOW);
            }
            else if ((data.Data.Contains("thời tiết") && data.Data.Contains("ngày mai")) || data.Data.Contains("còn ngày mai"))
            {
                String thu = "";
                if (SystemInfo.NOW.AddDays(1).DayOfWeek == DayOfWeek.Sunday)
                {
                    thu = String.Format("chủ nhật");
                }
                else
                {
                    thu = String.Format("thứ {0}", (int)SystemInfo.NOW.AddDays(1).DayOfWeek + 1);
                }

                mAPI_TroLyAoData_Out.Data = String.Format("Dự báo thời tiết ngày mai ở Quan Khê, Hải Dương {0} ngày {1:dd/MM} trời nhiều mây và nắng nhẹ, nhiệt độ từ 26 đến 33 độ, độ ẩm 76%", thu, SystemInfo.NOW.AddDays(1));
            }
            else if (data.Data.Contains("mấy giờ rồi") || data.Data.Contains("bây giờ là mấy giờ"))
            {
                mAPI_TroLyAoData_Out.Data = String.Format("Thời gian là {0:HH:mm} phút", SystemInfo.NOW);
            }
            else if (data.Data.Contains("hôm nay") && data.Data.Contains("thứ mấy"))
            {
                if (SystemInfo.NOW.DayOfWeek == DayOfWeek.Sunday)
                {
                    mAPI_TroLyAoData_Out.Data = String.Format("Hôm nay là chủ nhật");
                }
                else
                {
                    mAPI_TroLyAoData_Out.Data = String.Format("Hôm nay là thứ {0}", (int)SystemInfo.NOW.DayOfWeek + 1);
                }
            }
            else if (data.Data.Contains("ngày mai") && data.Data.Contains("thứ mấy"))
            {
                if (SystemInfo.NOW.AddDays(1).DayOfWeek == DayOfWeek.Sunday)
                {
                    mAPI_TroLyAoData_Out.Data = String.Format("Ngày mai là chủ nhật");
                }
                else
                {
                    mAPI_TroLyAoData_Out.Data = String.Format("Ngày mai là thứ {0}", (int)SystemInfo.NOW.AddDays(1).DayOfWeek + 1);
                }
            }
            else if (data.Data.EqualText("bạn là ai") || data.Data.EqualText("bạn là cái gì"))
            {
                mAPI_TroLyAoData_Out.Data = "Tôi là trợ lý ảo của bạn đây";
            }
            else if (data.Data.EqualText("tên bạn là gì"))
            {
                mAPI_TroLyAoData_Out.Data = "Tôi chưa tự giới thiệu sao ? Tên tôi là Daisy !";
            }
            else if (data.Data.Contains("bạn biết hát không") || data.Data.Contains("bạn có biết hát không") || data.Data.Contains("hát cho tôi nghe"))
            {
                mAPI_TroLyAoData_Out.Data += "<speak>";
                mAPI_TroLyAoData_Out.Data += "<p>";

                mAPI_TroLyAoData_Out.Data += "<s>Xin lỗi, giờ tôi vẫn chưa biết hát.</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Thay vào đó, tôi có thể đọc lời bài hát cho bạn tự tưởng tượng theo.</s>";
                mAPI_TroLyAoData_Out.Data += "<break time=\"300ms\"/>";

                mAPI_TroLyAoData_Out.Data += "<s>Kìa con bướm vàng.</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Kìa con bướm vàng.</s>";

                mAPI_TroLyAoData_Out.Data += "<s>Xòe đôi cánh.</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Xòe đôi cánh.</s>";

                mAPI_TroLyAoData_Out.Data += "<s>Tung cánh bay năm ba vòng.</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Tung cánh bay năm ba vòng.</s>";

                mAPI_TroLyAoData_Out.Data += "<s>Em ngồi xem...</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Em ngồi xem...</s>";

                mAPI_TroLyAoData_Out.Data += "</p>";
                mAPI_TroLyAoData_Out.Data += "</speak>";
            }
            else if (data.Data.Contains("bạn đang ở đâu"))
            {
                mAPI_TroLyAoData_Out.Data += "<speak>";
                mAPI_TroLyAoData_Out.Data += "<p>";

                mAPI_TroLyAoData_Out.Data += "<s>Tôi ở trong thiết bị này.</s>";
                mAPI_TroLyAoData_Out.Data += "<s>cả máy tính bảng có ngay khi cần.</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Google home cũng có phần.</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Ôi nhiều nhà quá phân vân chọn hoài.</s>";

                mAPI_TroLyAoData_Out.Data += "</p>";
                mAPI_TroLyAoData_Out.Data += "</speak>";
            }
            else if (data.Data.Contains("truyện cười") || data.Data.Contains("chuyện cười"))
            {
                mAPI_TroLyAoData_Out.Data += "<speak>";
                mAPI_TroLyAoData_Out.Data += "<p>";

                mAPI_TroLyAoData_Out.Data += "<s>Được, bạn nghe nhé !</s>";
                mAPI_TroLyAoData_Out.Data += "<break time=\"300ms\"/>";

                mAPI_TroLyAoData_Out.Data += "<s>Trong giờ địa lý, thầy hỏi trò.</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Em hãy nói ba lý do khiến em chắc rằng trái đất hình cầu.</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Thưa thầy, bố em nói thế, mẹ em nói thế và thầy cũng nói thế ạ !</s>";

                mAPI_TroLyAoData_Out.Data += "<audio src=\"https://ia601507.us.archive.org/31/items/google_cuoi/google_cuoi.ogg\"/>";

                mAPI_TroLyAoData_Out.Data += "</p>";
                mAPI_TroLyAoData_Out.Data += "</speak>";
            }
            else if (data.Data.Contains("truyện khác") || data.Data.Contains("chuyện khác"))
            {
                mAPI_TroLyAoData_Out.Data += "<speak>";
                mAPI_TroLyAoData_Out.Data += "<p>";

                mAPI_TroLyAoData_Out.Data += "<s>Được, nghe tôi kể đây này !</s>";
                mAPI_TroLyAoData_Out.Data += "<break time=\"300ms\"/>";

                mAPI_TroLyAoData_Out.Data += "<s>Ngày đầu tiên bé đi học về, bố mẹ hỏi. Ở lớp thế nào con ?</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Vui lắm bố ạ, cô giáo con xinh lắm !</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Thế cô dạy con những gì ?</s>";
                mAPI_TroLyAoData_Out.Data += "<s>Cô chẳng biết gì cả ! Cái gì cũng phải hỏi : Em nào cho cô biết nào.</s>";

                mAPI_TroLyAoData_Out.Data += "<audio src=\"https://ia601507.us.archive.org/31/items/google_cuoi/google_cuoi.ogg\"/>";

                mAPI_TroLyAoData_Out.Data += "</p>";
                mAPI_TroLyAoData_Out.Data += "</speak>";
            }
            else if (data.Data.EqualText("bật đèn phòng khách"))
            {
                mAPI_TroLyAoData_Out.Data = "OK, đã bật đèn phòng khách";
            }
            else if (data.Data.EqualText("tắt đèn phòng khách"))
            {
                mAPI_TroLyAoData_Out.Data = "OK, đã tắt đèn phòng khách";
            }
            else if (data.Data.EqualText("bật điều hòa") || data.Data.EqualText("tôi nóng quá"))
            {
                mAPI_TroLyAoData_Out.Data = "OK, đã bật điều hòa";
            }
            else if (data.Data.EqualText("để điều hòa 26 độ"))
            {
                mAPI_TroLyAoData_Out.Data = "OK, đã để điều hòa 26 độ C";
            }

            //Return
            if (String.IsNullOrEmpty(mAPI_TroLyAoData_Out.Data))
            {
                mAPI_TroLyAoData_Out.Data = "Xin lỗi... Tôi không hiểu !";
            }

            mAPI_TroLyAoData_Out.ID       = Sanita.Utility.Encryption.CryptorEngine.CreateMD5Hash(mAPI_TroLyAoData_Out.Data);
            mAPI_TroLyAoData_Out.Language = "vi-VN";

            return(mAPI_TroLyAoData_Out);
#endif
        }
示例#14
0
        public String ExecuteCommand(Intent_Request data)
        {
            EntityParam thiet_bi = data.mListParam.FirstOrDefault(p => p.Name == "thiet_bi");

            if (thiet_bi == null)
            {
                return("<speak><p><s>Bạn hãy nói tên thiết bị</s></p></speak>");
            }

            //Danh sách thiết bị
            IList <Device> mListDevice = DevicePresenter.GetDevices(null, null);
            IList <Room>   mListRoom   = RoomPresenter.GetRooms(null, null);

            foreach (Device device in mListDevice)
            {
                device.mRoom = mListRoom.FirstOrDefault(p => p.RoomID == device.RoomID);
                device.mRoom = device.mRoom ?? new Room();
            }

            Device mDevice = null;

            while (true)
            {
                //Tìm thiết bị trùng khớp
                //ví dụ "đèn ngủ 1"
                {
                    mDevice = mListDevice.FirstOrDefault(p => p.DeviceName.EqualTextNoCase(thiet_bi.Value));
                    if (mDevice != null)
                    {
                        break;
                    }
                }

                //Tìm thiết bị gồm tên thiết bị (đầy đủ) + tên phòng
                //ví dụ "đèn ngủ 1 phòng khách"
                {
                    mDevice = mListDevice.FirstOrDefault(p => (p.DeviceName + " " + p.mRoom.RoomName).EqualTextNoCase(thiet_bi.Value));
                    if (mDevice != null)
                    {
                        break;
                    }
                }

                //Tìm thiết bị gồm tên thiết bị (ngắn gọn) + tên phòng
                //ví dụ "đèn phòng khách"
                {
                    mDevice = mListDevice.FirstOrDefault(p => (p.DeviceName_Short + " " + p.mRoom.RoomName).EqualTextNoCase(thiet_bi.Value));
                    if (mDevice != null)
                    {
                        break;
                    }
                }

                //Tìm thiết bị cùng phòng (tên đầy đủ)
                {
                    mListDevice = mListDevice.Where(p => p.RoomID == data.mDevice.RoomID).ToList();

                    {
                        mDevice = mListDevice.FirstOrDefault(p => p.DeviceName.EqualTextNoCase(thiet_bi.Value));
                        if (mDevice != null)
                        {
                            break;
                        }
                    }

                    //Tìm thiết bị cùng phòng (tên ngắn gọn)
                    {
                        mDevice = mListDevice.FirstOrDefault(p => p.DeviceName_Short.EqualTextNoCase(thiet_bi.Value));
                        if (mDevice != null)
                        {
                            break;
                        }
                    }
                }

                break;
            }

            if (mDevice != null)
            {
                switch (data.DM_Entity_TypeID)
                {
                case DM_Entity_Type.HOME_CONTROL_BAT_THIET_VI:
                {
                    if (UtilityHassIO.mInstance.Switch_Turn_OnOff(data.mDevice.mUser.HassIO_URL, data.mDevice.mUser.HassIO_KEY, mDevice.DeviceCode, "on"))
                    {
                        return(String.Format("<speak><p><s>Đã bật {0}</s></p></speak>", mDevice.DeviceName));
                    }
                    else
                    {
                        return(String.Format("<speak><p><s>Xin lỗi, tôi không thực hiện được yêu cầu của bạn</s></p></speak>", mDevice.DeviceName));
                    }
                }

                case DM_Entity_Type.HOME_CONTROL_TAT_THIET_VI:
                {
                    if (UtilityHassIO.mInstance.Switch_Turn_OnOff(data.mDevice.mUser.HassIO_URL, data.mDevice.mUser.HassIO_KEY, mDevice.DeviceCode, "off"))
                    {
                        return(String.Format("<speak><p><s>Đã tắt {0}</s></p></speak>", mDevice.DeviceName));
                    }
                    else
                    {
                        return(String.Format("<speak><p><s>Xin lỗi, tôi không thực hiện được yêu cầu của bạn</s></p></speak>", mDevice.DeviceName));
                    }
                }

                default:
                    break;
                }
            }
            else
            {
                return("<speak><p><s>Tôi không tìm được thiết bị trong nhà của bạn</s></p></speak>");
            }

            return("");
        }
示例#15
0
        public String ExecuteCommand(Intent_Request data)
        {
            String thoi_gian      = "";
            String thoi_gian_gio  = "";
            String thoi_gian_phut = "";

            //Check entity
            if (data.DM_Entity_TypeID == 0)
            {
                EntityParam mEntityParam_ThoiGian = data.mListParam.FirstOrDefault(p => p.Name == "thoi_gian");
                if (mEntityParam_ThoiGian != null)
                {
                    if (mEntityParam_ThoiGian.Value == "theo can chi")
                    {
                        data.DM_Entity_TypeID = DM_Entity_Type.THOI_GIAN_AM_LICH_HOM_NAY;
                    }
                }
            }
            if (data.DM_Entity_TypeID == 0)
            {
                data.DM_Entity_TypeID = DM_Entity_Type.THOI_GIAN_HOM_NAY;
            }

            //Lấy response
            Intent_Response mIntent_Response = Intent_ResponsePresenter.GetIntent_Response_Request(data);
            String          response_data    = mIntent_Response.Data;

            response_data = response_data ?? "";

            //Cập nhật biến
            switch (data.DM_Entity_TypeID)
            {
            case DM_Entity_Type.THOI_GIAN_HOM_NAY:
            {
                thoi_gian      = String.Format("{0:HH:mm}", SystemInfo.NOW);
                thoi_gian_gio  = String.Format("{0:HH}", SystemInfo.NOW);
                thoi_gian_phut = String.Format("{0:mm}", SystemInfo.NOW);
            }
            break;

            case DM_Entity_Type.THOI_GIAN_HOM_NAY_DIA_DIEM:
            {
                EntityParam dia_diem = data.mListParam.FirstOrDefault(p => p.Name == "dia_diem");
                if (dia_diem != null)
                {
                    thoi_gian = GetThoiGian_DiaDiem(dia_diem.Value);
                    IList <String> list_time = thoi_gian.Split(':').ToList();
                    if (list_time.Count == 2)
                    {
                        thoi_gian_gio  = list_time[0];
                        thoi_gian_phut = list_time[1];
                    }
                }
            }
            break;

            default:
                break;
            }

            //Update biến
            if (!String.IsNullOrEmpty(thoi_gian))
            {
                response_data = response_data.Replace("<thoi_gian>", thoi_gian);
                response_data = response_data.Replace("<thoi_gian_gio>", thoi_gian_gio);
                response_data = response_data.Replace("<thoi_gian_phut>", thoi_gian_phut);
            }
            else
            {
                response_data         = "";
                data.DM_Intent_TypeID = DM_Intent_Type.KHONG_HIEU;
            }

            //Update biến đầu vào
            foreach (EntityParam param in data.mListParam)
            {
                response_data = response_data.Replace("<" + param.Name + ">", param.Value);
            }

            //Response
            return(response_data);
        }
示例#16
0
 public static int DeleteIntent_Request(Intent_Request data)
 {
     return(Intent_RequestDB.mInstance.DeleteIntent_Request(data));
 }
示例#17
0
 public static void InsertIntent_Request(Intent_Request data)
 {
     Intent_RequestDB.mInstance.InsertIntent_Request(null, null, data);
 }
示例#18
0
 public static void UpdateIntent_Request(Intent_Request data)
 {
     Intent_RequestDB.mInstance.UpdateIntent_Request(null, null, data);
 }
示例#19
0
        public int UpdateIntent_Request(IDbConnection connection, IDbTransaction trans, Intent_Request data)
        {
            lock (lockObject)
            {
                if (data == null)
                {
                    return(DataTypeModel.RESULT_NG);
                }

                String data_request = data.Data;
                data_request = data_request ?? "";
                data_request = System.Text.RegularExpressions.Regex.Replace(data_request, @"<[^>]+>", "");
                data_request = data_request.TrimSpace().Trim();

                StringBuilder sql = new StringBuilder();
                sql.Append(" UPDATE tb_intent_request ");
                sql.Append("  SET  ");
                sql.Append("      IntentID = " + data.IntentID.Escape()).Append(", ");
                sql.Append("      Data = " + data.Data.Escape()).Append(", ");
                sql.Append("      Data_Query = " + data_request.Escape_TSQuery()).Append(", ");
                sql.Append("      DM_Entity_TypeID = " + data.DM_Entity_TypeID.Escape()).Append(", ");
                sql.Append("      Current_DM_Intent_TypeID = " + data.Current_DM_Intent_TypeID.Escape()).Append(", ");
                sql.Append("      Current_DM_Entity_TypeID = " + data.Current_DM_Entity_TypeID.Escape()).Append(", ");
                sql.Append("      DM_Intent_TypeID = " + data.DM_Intent_TypeID.Escape());
                sql.Append("  WHERE Intent_RequestID = " + data.Intent_RequestID);
                return(baseDAO.DoUpdate(connection, trans, sql.ToString()));
            }
        }
示例#20
0
        public String ExecuteCommand(Intent_Request data)
        {
            EntityParam noi_dung = data.mListParam.FirstOrDefault(p => p.Name == "noi_dung");

            if (noi_dung != null)
            {
                String noi_dung_request = noi_dung.Value;

                if (data.DM_Entity_TypeID == DM_Entity_Type.WIKI_LA_AI)
                {
                    noi_dung_request += " là ai";
                }
                if (data.DM_Entity_TypeID == DM_Entity_Type.WIKI_LA_GI)
                {
                    noi_dung_request += " là gì";
                }
                if (data.DM_Entity_TypeID == DM_Entity_Type.WIKI_DINH_NGHIA)
                {
                    noi_dung_request = "định nghĩa " + noi_dung_request;
                }

                String data_response = TraCuuThongTin(noi_dung_request);
                if (!String.IsNullOrEmpty(data_response))
                {
                    return(data_response);
                }
                else
                {
                    if (data.DM_Entity_TypeID == 0)
                    {
                        String data_response_new = "";

                        //là gì
                        noi_dung_request  = noi_dung.Value + " là gì";
                        data_response_new = TraCuuThongTin(noi_dung_request);
                        if (!String.IsNullOrEmpty(data_response_new))
                        {
                            return(data_response_new);
                        }

                        //là ai
                        noi_dung_request  = noi_dung.Value + " là ai";
                        data_response_new = TraCuuThongTin(noi_dung_request);
                        if (!String.IsNullOrEmpty(data_response_new))
                        {
                            return(data_response_new);
                        }

                        //định nghĩa
                        noi_dung_request  = "định nghĩa " + noi_dung.Value;
                        data_response_new = TraCuuThongTin(noi_dung_request);
                        if (!String.IsNullOrEmpty(data_response_new))
                        {
                            return(data_response_new);
                        }
                    }
                }
            }

            return("");
        }
示例#21
0
 public static Intent_Response GetIntent_Response_Request(Intent_Request mIntent_Request)
 {
     return(Intent_ResponseDB.mInstance.GetIntent_Response(mIntent_Request));
 }
示例#22
0
        private void bwAsync_Worker(object sender, DoWorkEventArgs e)
        {
            ProcessingType type = (ProcessingType)e.Argument;

            e.Result = type;

            switch (type)
            {
            case ProcessingType.LoadData:
            {
                mListData_Flat = Intent_RequestPresenter.GetIntent_Requests();

                //Update dữ liệu
                mListData = new List <Intent_Request>();
                foreach (DM_Intent_Type nhom in DM_Intent_Type.GetDefaultList(0))
                {
                    if (mListData_Flat.Any(p => p.DM_Intent_TypeID == nhom.DM_Intent_TypeID))
                    {
                        Intent_Request group_Intent_Request = new Intent_Request();
                        group_Intent_Request.DM_Intent_TypeID = nhom.DM_Intent_TypeID;
                        group_Intent_Request.Intent_RequestID = -1;
                        group_Intent_Request.Data             = nhom.DM_Intent_TypeName;
                        group_Intent_Request.mListSubData     = new List <Intent_Request>();
                        mListData.Add(group_Intent_Request);

                        IList <DM_Entity_Type> ListDM_Entity_Type = DM_Entity_Type.GetDefaultList(0).Where(p => p.DM_Intent_TypeID == nhom.DM_Intent_TypeID).ToList();
                        if (ListDM_Entity_Type.Count == 0)
                        {
                            group_Intent_Request.mListSubData = mListData_Flat.Where(p => p.DM_Intent_TypeID == nhom.DM_Intent_TypeID).ToList();
                            group_Intent_Request.mListSubData = group_Intent_Request.mListSubData.Select(p => { p.mParent = group_Intent_Request; return(p); }).ToList();
                        }
                        else
                        {
                            foreach (DM_Entity_Type loai_dichvu in ListDM_Entity_Type)
                            {
                                if (mListData_Flat.Any(p => p.DM_Entity_TypeID == loai_dichvu.DM_Entity_TypeID && p.DM_Intent_TypeID == loai_dichvu.DM_Intent_TypeID))
                                {
                                    Intent_Request type_service = new Intent_Request();
                                    type_service.DM_Intent_TypeID = nhom.DM_Intent_TypeID;
                                    type_service.DM_Entity_TypeID = loai_dichvu.DM_Entity_TypeID;
                                    type_service.Intent_RequestID = -2;
                                    type_service.Data             = loai_dichvu.DM_Entity_TypeName;
                                    type_service.mListSubData     = mListData_Flat.Where(p => p.DM_Intent_TypeID == loai_dichvu.DM_Intent_TypeID && p.DM_Entity_TypeID == loai_dichvu.DM_Entity_TypeID).ToList();
                                    type_service.mListSubData     = type_service.mListSubData.Select(p => { p.mParent = type_service; return(p); }).ToList();
                                    if (type_service.mListSubData.Count > 0)
                                    {
                                        group_Intent_Request.mListSubData.Add(type_service);
                                    }
                                }
                            }
                        }
                    }
                }

                //Update danh sách
                {
                    mListThongTinDanhSachIntent_Request      = new List <ThongTinDanhSachIntent_Request>();
                    mListThongTinDanhSachIntent_Request_Flat = new List <ThongTinDanhSachIntent_Request>();
                    ThongTinDanhSachIntent_Request.ThongTinDanhSachIntent_RequestID_Index = 1;

                    //Add tất cả nhóm dịch vụ
                    ThongTinDanhSachIntent_Request root = new ThongTinDanhSachIntent_Request();
                    root.ThongTinDanhSachIntent_RequestType = (int)ThongTinDanhSachIntent_Request.TYPE.ROOT;
                    root.mListData = mListData;
                    root.ThongTinDanhSachIntent_RequestName = String.Format("Tất cả ({0})".Translate(), mListData_Flat.Count());
                    mListThongTinDanhSachIntent_Request.Add(root);
                    mListThongTinDanhSachIntent_Request_Flat.Add(root);

                    foreach (DM_Intent_Type nhom_dich_vu in DM_Intent_Type.GetDefaultList(1))
                    {
                        Intent_Request group_service = mListData.FirstOrDefault(p => p.DM_Intent_TypeID == nhom_dich_vu.DM_Intent_TypeID && p.Intent_RequestID == -1);
                        if (group_service != null)
                        {
                            ThongTinDanhSachIntent_Request mData = new ThongTinDanhSachIntent_Request();
                            mData.ThongTinDanhSachIntent_RequestType = (int)ThongTinDanhSachIntent_Request.TYPE.GROUP;
                            mData.DM_Intent_TypeID = nhom_dich_vu.DM_Intent_TypeID;
                            mData.mListSubData     = new List <ThongTinDanhSachIntent_Request>();
                            mData.mListData        = group_service.mListSubData;
                            mData.ThongTinDanhSachIntent_RequestName = DM_Intent_Type.GetDefault(mData.DM_Intent_TypeID).DM_Intent_TypeName + " (" + mListData_Flat.Where(p => p.DM_Intent_TypeID == mData.DM_Intent_TypeID).Count() + ")";
                            mListThongTinDanhSachIntent_Request.Add(mData);
                            mListThongTinDanhSachIntent_Request_Flat.Add(mData);

                            //Add loại dịch vụ
                            {
                                IList <DM_Entity_Type> list_sub = DM_Entity_Type.GetDefaultList(0).Where(p => p.DM_Intent_TypeID == nhom_dich_vu.DM_Intent_TypeID).ToList();
                                list_sub = list_sub.OrderBy(p => p.DM_Intent_TypeID).ThenBy(p => p.DM_Entity_TypeID).ToList();

                                foreach (DM_Entity_Type sub_data in list_sub)
                                {
                                    Intent_Request type_service = group_service.mListSubData.FirstOrDefault(p => p.DM_Entity_TypeID == sub_data.DM_Entity_TypeID && p.Intent_RequestID == -2 && p.DM_Intent_TypeID == sub_data.DM_Intent_TypeID);
                                    if (type_service != null)
                                    {
                                        ThongTinDanhSachIntent_Request mSubData = new ThongTinDanhSachIntent_Request();
                                        mSubData.ThongTinDanhSachIntent_RequestType = (int)ThongTinDanhSachIntent_Request.TYPE.SUB_GROUP;
                                        mSubData.DM_Intent_TypeID = mData.DM_Intent_TypeID;
                                        mSubData.DM_Entity_TypeID = sub_data.DM_Entity_TypeID;
                                        mSubData.mListData        = group_service.mListSubData.Where(p => p.DM_Entity_TypeID == sub_data.DM_Entity_TypeID && p.DM_Intent_TypeID == sub_data.DM_Intent_TypeID).ToList();
                                        mSubData.ThongTinDanhSachIntent_RequestName = DM_Entity_Type.GetDefault(mSubData.DM_Entity_TypeID).DM_Entity_TypeName + " (" + mListData_Flat.Where(p => p.DM_Entity_TypeID == mSubData.DM_Entity_TypeID && p.DM_Intent_TypeID == mSubData.DM_Intent_TypeID).Count() + ")";
                                        if (mSubData.mListData.Count > 0)
                                        {
                                            mData.mListSubData.Add(mSubData);
                                            mListThongTinDanhSachIntent_Request_Flat.Add(mSubData);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            break;

            default:
                break;
            }
        }
示例#23
0
        public FormViewIntent_Request()
        {
            InitializeComponent();
            this.Translate();
            this.UpdateUI();
            base.DoInit();

            //Create worker
            mThread = new ExBackgroundWorker();
            mThread.WorkerReportsProgress      = true;
            mThread.WorkerSupportsCancellation = true;
            mThread.ProgressChanged           += new ProgressChangedEventHandler(bwAsync_WorkerChanged);
            mThread.RunWorkerCompleted        += new RunWorkerCompletedEventHandler(bwAsync_WorkerCompleted);
            mThread.DoWork += new DoWorkEventHandler(bwAsync_Worker);

            this.olvColumnLoai.AspectGetter = delegate(object x)
            {
                Intent_Request data = (Intent_Request)x;
                if (data != null && data.Intent_RequestID > 0)
                {
                    return(DM_Intent_Type.GetDefault(data.DM_Intent_TypeID).DM_Intent_TypeName);
                }
                return("");
            };

            this.olvColumnDoiTuong.AspectGetter = delegate(object x)
            {
                Intent_Request data = (Intent_Request)x;
                if (data != null && data.Intent_RequestID > 0)
                {
                    DM_Entity_Type checkdata = DM_Entity_Type.GetDefaultList(0).FirstOrDefault(p => p.DM_Intent_TypeID == data.DM_Intent_TypeID && p.DM_Entity_TypeID == data.DM_Entity_TypeID);
                    if (checkdata != null)
                    {
                        return(checkdata.DM_Entity_TypeName);
                    }
                    else
                    {
                        return("");
                    }
                }
                return("");
            };

            //Init container tree list view
            this.mListViewData.CanExpandGetter = delegate(object x)
            {
                Intent_Request data = (Intent_Request)x;
                if (data.mListSubData != null && data.mListSubData.Count > 0)
                {
                    IList <Intent_Request> mListSubData = data.mListSubData;

                    if (mListSubData.Count > 0)
                    {
                        return(true);
                    }
                }

                return(false);
            };

            this.mListViewData.ChildrenGetter = delegate(object x)
            {
                Intent_Request         data         = (Intent_Request)x;
                IList <Intent_Request> mListSubData = data.mListSubData;

                return(mListSubData);
            };

            mListViewData.PrimarySortOrder  = SortOrder.Ascending;
            mListViewData.PrimarySortColumn = olvColumnID;

            //Init container tree list view
            this.ListViewNhomDichVu.CanExpandGetter = delegate(object x)
            {
                ThongTinDanhSachIntent_Request data = (ThongTinDanhSachIntent_Request)x;
                if (data.mListSubData != null && data.mListSubData.Count > 0)
                {
                    IList <ThongTinDanhSachIntent_Request> mListSubData = data.mListSubData;
                    return(data.mListSubData.Count > 0);
                }

                return(false);
            };
            this.ListViewNhomDichVu.ChildrenGetter = delegate(object x)
            {
                ThongTinDanhSachIntent_Request data = (ThongTinDanhSachIntent_Request)x;
                return(data.mListSubData);
            };
        }