コード例 #1
0
        public static int Visport_MO_Insert(Visport_MO _MO)
        {
            SqlConnection dbConn = new SqlConnection(ConnectionString);
            SqlCommand    dbCmd  = new SqlCommand("Visport_MO_Insert", dbConn);

            dbCmd.CommandType = CommandType.StoredProcedure;

            dbCmd.Parameters.AddWithValue("@User_ID", _MO.User_ID);
            dbCmd.Parameters.AddWithValue("@Request_ID", _MO.Request_ID);
            dbCmd.Parameters.AddWithValue("@Service_ID", _MO.Service_ID);
            dbCmd.Parameters.AddWithValue("@Command_Code", _MO.Command_Code);
            dbCmd.Parameters.AddWithValue("@Message", _MO.Message);
            dbCmd.Parameters.AddWithValue("@Partner_ID", _MO.Partner_ID);
            dbCmd.Parameters.AddWithValue("@ServiceType", _MO.ServiceType);
            dbCmd.Parameters.AddWithValue("@ServiceId", _MO.ServiceId);
            dbCmd.Parameters.AddWithValue("@Channel", _MO.Channel);

            dbCmd.Parameters.AddWithValue("@RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;

            try
            {
                dbConn.Open();
                dbCmd.ExecuteNonQuery();
                return((int)dbCmd.Parameters["@RETURN_VALUE"].Value);
            }
            finally
            {
                dbConn.Close();
            }
        }
コード例 #2
0
        public int ProcessMO(String Command_Code, String Service_ID, String User_ID, String Message, String Request_ID, String Channel)
        {
            int retval = PROCESSMO_RESULT.UNKNOWN;

            try
            {
                #region Check blacklist
                int q = Controller.CheckBlacklist(User_ID);
                if (q > 0)
                {
                    retval = PROCESSMO_RESULT.BLACK_LIST;
                    return(retval);
                }
                if (!Common.filterMsisdn(User_ID))
                {
                    retval = PROCESSMO_RESULT.BLACK_LIST;
                    return(retval);
                }
                #endregion
                #region Check Syntax
                string mo = Common.Normalize(Message).ToUpper();
                Command_Code = Command_Code.ToUpper();
                User_ID      = Common.GetNormalPhonenumber(User_ID);
                Service_Info matchService   = null;
                bool         isSubscription = false;


                List <Service_Info> listService = Controller.Visport_Subscription_Services_ListAll();
                foreach (Service_Info s2Service in listService)
                {
                    if (Common.IsRightSyntax(s2Service.Register_Syntax, mo))
                    {
                        matchService   = s2Service;
                        isSubscription = true;
                        break;
                    }
                    else if (Common.IsRightSyntax(s2Service.Cancel_Syntax, mo))
                    {
                        matchService   = s2Service;
                        isSubscription = false;
                        break;
                    }
                }
                string mt = "";
                if (matchService == null) // => Sai cú pháp
                {
                    mt = "Tin nhan cua quy khach sai cu phap. De duoc huong dan su dung dich vu, soan tin: HD gui 979. Tran trong cam on";
                    Visport_MO moInfo = new Visport_MO();
                    moInfo.User_ID      = User_ID;
                    moInfo.Request_ID   = Request_ID;
                    moInfo.Service_ID   = Service_ID;
                    moInfo.Command_Code = Command_Code;
                    moInfo.Message      = Message.Replace("'", " ");
                    moInfo.Partner_ID   = "";
                    moInfo.ServiceType  = 0;
                    moInfo.ServiceId    = 0;
                    moInfo.Channel      = Channel;
                    int rtMO = Controller.Visport_MO_Insert(moInfo);
                    Controller.SendMT(User_ID, mt, Service_ID, Command_Code, 0, 0, MESSAGE_TYPE.Refund, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);
                    logger.ErrorFormat("*** Process MO [Short_Code:{0}], [Command_Code:{1}], [User_ID:{2}], [Request_ID:{3}], [Message:{4}], [Channel:{6}]: [MTLs:{5}]"
                                       , Service_ID
                                       , Command_Code
                                       , User_ID
                                       , Request_ID
                                       , Message
                                       , mt
                                       , Channel);

                    retval = PROCESSMO_RESULT.WRONGSYNTAX;
                }
                else
                {
                    Visport_MO moInfo = new Visport_MO();
                    moInfo.User_ID      = User_ID;
                    moInfo.Request_ID   = Request_ID;
                    moInfo.Service_ID   = Service_ID;
                    moInfo.Command_Code = Command_Code;
                    moInfo.Message      = Message.Replace("'", " ");
                    moInfo.Partner_ID   = "";
                    moInfo.ServiceType  = matchService.Service_Type;
                    moInfo.ServiceId    = matchService.ID;
                    moInfo.Channel      = Channel;
                    int            rtMO           = Controller.Visport_MO_Insert(moInfo);
                    ServiceHandler handler        = null;
                    string         handleResponse = "";
                    if (isSubscription)
                    {
                        #region Xử lý đăng ký
                        List <Visport_Registered_Users> listUsers          = Controller.Visport_GetUser_Info(User_ID, matchService.ID);
                        List <Visport_Registered_Users> lstCheckFisrtRegis = Controller.Visport_CheckFirst_Regis(User_ID, matchService.ID);
                        if (listUsers.Count > 0)
                        {
                            mt = matchService.Double_Register_MT;
                            Controller.SendMT(User_ID, mt, Service_ID, Command_Code, matchService.Service_Type, matchService.ID, MESSAGE_TYPE.Charge, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);

                            retval = PROCESSMO_RESULT.DOUBLE_REGISTER;
                        }
                        else
                        {
                            handler = new ServiceHandler(matchService.HandlerEndpoint);
                            try
                            {
                                handleResponse = handler.SyncSubscriptionData(Service_ID, Command_Code, User_ID, Message, Request_ID, matchService.ID.ToString(), matchService.RefID, "1", "Subscription");
                                //handleResponse = "1";
                            }
                            catch (Exception ex)
                            {
                                handleResponse = "0|" + ex.Message;
                            }
                            if (handleResponse.StartsWith("1|"))
                            {
                                if (lstCheckFisrtRegis.Count > 0)
                                {
                                    //Update Status Registered_Users
                                    Visport_Registered_Users user = new Visport_Registered_Users();
                                    user.User_ID             = User_ID;
                                    user.Request_ID          = Request_ID;
                                    user.Service_ID          = matchService.ID;
                                    user.Short_Code          = Service_ID;
                                    user.Command_Code        = Command_Code;
                                    user.Service_Type        = matchService.Service_Type;
                                    user.Status              = Convert.ToInt32(USER_STATUS.ACTIVE);
                                    user.RegistrationChannel = Channel;
                                    user.PeriodLength        = matchService.PeriodLength;
                                    user.NoChargeLength      = matchService.NoChargeLength;
                                    user.ChargedFee          = matchService.Charging_Price;
                                    int rtvalue = Controller.Visport_Registered_Users_Update(user);
                                    if (rtvalue > 0)
                                    {
                                        mt = matchService.Right_Syntax_MT;
                                        Controller.SendMT(User_ID, mt, Service_ID, Command_Code, matchService.Service_Type, matchService.ID, MESSAGE_TYPE.Charge, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);
                                        retval = PROCESSMO_RESULT.REGISTER_SUCCESSFULLY;
                                    }
                                    else
                                    {
                                        mt = "He thong dang ban. De duoc ho tro xin lien he 19001255. Cam on quy khach.";
                                        Controller.SendMT(User_ID, mt, Service_ID, Command_Code, matchService.Service_Type, matchService.ID, MESSAGE_TYPE.Refund, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);
                                        retval = PROCESSMO_RESULT.SYSTEM_BUSY;
                                    }
                                }
                                else
                                {
                                    //Insert DB Registered_Users
                                    Visport_Registered_Users user = new Visport_Registered_Users();
                                    user.User_ID             = User_ID;
                                    user.Request_ID          = Request_ID;
                                    user.Service_ID          = matchService.ID;
                                    user.Short_Code          = Service_ID;
                                    user.Command_Code        = Command_Code;
                                    user.Service_Type        = matchService.Service_Type;
                                    user.Status              = Convert.ToInt32(USER_STATUS.ACTIVE);
                                    user.RegistrationChannel = Channel;
                                    user.PeriodLength        = matchService.PeriodLength;
                                    user.ChargedFee          = matchService.Charging_Price;
                                    int rtvalue = Controller.Visport_Registered_Users_Insert(user);
                                    if (rtvalue > 0)
                                    {
                                        mt = matchService.Right_Syntax_MT;
                                        Controller.SendMT(User_ID, mt, Service_ID, Command_Code, matchService.Service_Type, matchService.ID, MESSAGE_TYPE.Charge, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);
                                        retval = PROCESSMO_RESULT.REGISTER_SUCCESSFULLY;
                                    }
                                    else
                                    {
                                        mt = "He thong dang ban. De duoc ho tro xin lien he 19001255. Cam on quy khach.";
                                        Controller.SendMT(User_ID, mt, Service_ID, Command_Code, matchService.Service_Type, matchService.ID, MESSAGE_TYPE.Refund, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);
                                        retval = PROCESSMO_RESULT.SYSTEM_BUSY;
                                    }
                                }
                            }
                            else if (handleResponse.StartsWith("0|"))
                            {
                                mt = "He thong dang ban. De duoc ho tro xin lien he 19001255. Cam on quy khach.";
                                Controller.SendMT(User_ID, mt, Service_ID, Command_Code, matchService.Service_Type, matchService.ID, MESSAGE_TYPE.Refund, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);
                                retval = PROCESSMO_RESULT.SYSTEM_BUSY;
                            }
                        }
                        #endregion
                    }
                    else
                    {
                        #region Xử lý hủy
                        List <Visport_Registered_Users> listUser = Controller.Visport_GetUser_Info(User_ID, matchService.ID);
                        if (listUser.Count > 0)
                        {
                            handler = new ServiceHandler(matchService.HandlerEndpoint);
                            try
                            {
                                handleResponse = handler.SyncSubscriptionData(Service_ID, Command_Code, User_ID, Message, Request_ID, matchService.ID.ToString(), matchService.RefID, "0", "Unsubscription");
                                //handleResponse = "1";
                            }
                            catch (Exception ex)
                            {
                                handleResponse = "0|" + ex.Message;
                            }

                            if (handleResponse.StartsWith("1|"))
                            {
                                Controller.Visport_Deactivate_Users(listUser[0].ID, "From user by SMS");
                                mt = matchService.Cancel_MT;
                                Controller.SendMT(User_ID, mt, Service_ID, Command_Code, matchService.Service_Type, matchService.ID, MESSAGE_TYPE.Charge, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);
                                retval = PROCESSMO_RESULT.CANCEL_SUCCESSFULLY;
                            }
                            else if (handleResponse.StartsWith("0|"))
                            {
                                mt = "He thong dang ban. De duoc ho tro xin lien he 19001255. Cam on quy khach.";
                                Controller.SendMT(User_ID, mt, Service_ID, Command_Code, matchService.Service_Type, matchService.ID, MESSAGE_TYPE.Refund, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);
                                retval = PROCESSMO_RESULT.SYSTEM_BUSY;
                            }
                        }
                        else
                        {
                            mt = "Ban khong dang ki dich vu nay.De duoc ho tro xin lien he 19001255. Cam on quy khach!";
                            Controller.SendMT(User_ID, mt, Service_ID, Command_Code, matchService.Service_Type, matchService.ID, MESSAGE_TYPE.Charge, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);
                            retval = PROCESSMO_RESULT.NOT_EXISTS;
                        }
                        #endregion
                    }

                    logger.InfoFormat("*** Visport Process MO [Short_Code:{0}], [Command_Code:{1}], [User_ID:{2}], [Request_ID:{3}], [Message:{4}], [Channel:{8}]: [HandlerEndpoint:{5}], [HandlerResponse:{6}], [MTLs:{7}]"
                                      , Service_ID
                                      , Command_Code
                                      , User_ID
                                      , Request_ID
                                      , Message
                                      , matchService.HandlerEndpoint
                                      , handleResponse
                                      , mt
                                      , Channel);
                }

                #endregion
            }
            catch (Exception ex)
            {
                retval = PROCESSMO_RESULT.EXCEPTION;

                string mt = "He thong dang ban. Quy khach vui long quay lai sau it phut.";
                Controller.SendMT(User_ID, mt, Service_ID, Command_Code, 0, 0, MESSAGE_TYPE.Refund, Request_ID, 1, 1, 0, CONTENT_TYPE.Text);
                logger.ErrorFormat(String.Format("*** Error Process MO [Short_Code:{0}], [Command_Code:{1}], [User_ID:{2}], [Request_ID:{3}], [Message:{4}], [Channel:{5}]: [Exception:{6}]"
                                                 , Service_ID
                                                 , Command_Code
                                                 , User_ID
                                                 , Request_ID
                                                 , Message
                                                 , Channel
                                                 , ex));
            }
            return(retval);
        }