Esempio n. 1
0
        private void AnalizeCommand(String msg)
        {
            try
            {
                var js  = new JavaScriptSerializer();
                var obj = js.Deserialize <Message>(msg);

                if (CheckClientVersion(obj.Version) == false)
                {
                    return;
                }

                Dictionary <string, object> dic = (Dictionary <string, object>)obj.Data;

                this.LastRequestTime = DateTime.Now;
                this.LastCommand     = obj.Command;

                OnPropertyChanged("LastRequest");
                OnPropertyChanged("LastCommand");



                switch (obj.Command)
                {
                case Commands.Login:
                {
                    string email    = dic["email"].ToString();
                    string password = dic["password"].ToString();
                    ProccessLogin(email, password, obj.SystemId);
                    break;
                }

                case Commands.Signup:
                {
                    string email    = dic["email"].ToString();
                    string password = dic["password"].ToString();

                    var result = DatabaseManager.Signup(email, password);
                    SendCommand(Commands.Signup, new { result = result });
                    break;
                }

                case Commands.Confirm:
                {
                    ProccessConfirm(dic);
                    break;
                }

                case Commands.RegisterSite:
                {
                    RegisterSite(dic);
                    break;
                }

                case Commands.DeleteSite:
                {
                    var siteId = Convert.ToInt32(dic["id"]);
                    var result = DatabaseManager.DeleteSite(siteId);
                    SendCommand(Commands.DeleteSite, new { result = result });
                    if (result == true)
                    {
                        var status = DatabaseManager.GetStatus(this.UserId);
                        RizehServer.UpdateClientsStatus("sites", status.TotalSites);
                    }
                    break;
                }

                case Commands.UpdateSite:
                {
                    UpdateSite(dic);
                    break;
                }

                case Commands.NextSite:
                {
                    ProccessNextSite();
                    break;
                }

                case Commands.UserWebsiteList:
                {
                    RizehServer.ProccessUserWebsiteList(this.UserId);
                    break;
                }

                case Commands.UserPayments:
                {
                    ProccessUserPayments(this.UserId);
                    break;
                }

                case Commands.ProductList:
                {
                    var list = DatabaseManager.GetProductsList();
                    SendCommand(Commands.ProductList, new { list = list });
                    break;
                }

                case Commands.Pays:
                {
                    var result = false;
                    var url    = "";

                    var id      = (int)dic["id"];
                    var cost    = DatabaseManager.GetProductCost(id) * 10;
                    var payline = new PayLine();
                    var id_get  = payline.Send(cost);

                    var pay = new Payments()
                    {
                        ProductId = id,
                        UserId    = UserId,
                        IdGet     = id_get,
                        Status    = 0,
                        Amount    = cost
                    };

                    result = DatabaseManager.InsertPayment(pay);

                    if (result == true && id_get > 0)
                    {
                        url = String.Format("http://payline.ir/payment/gateway-{0}", id_get);
                    }
                    else
                    {
                        result = false;
                    }

                    SendCommand(Commands.Pays, new { result = result, url = url });
                    break;
                }

                case Commands.ChangePassword:
                {
                    var result = DatabaseManager.ChangePassword(UserId, dic["oldPassword"].ToString(), dic["newPassword"].ToString());
                    SendCommand(Commands.ChangePassword, new { result = result });
                    break;
                }

                case Commands.ResetPassword:
                {
                    var email  = dic["email"].ToString();
                    var userId = DatabaseManager.GetUserIdFromEmail(email);
                    if (userId > 0)
                    {
                        var key  = Cryptor.EncryptRijndael(userId.ToString(), "Rizeh.com");
                        var link = String.Format("http://www.rizeh.com/reset.aspx?key={0}", key);
                        EmailManager.Send(email, "بازنشانی رمز عبور در ریزه", Settings.Default.ResetPasswordEmail.Replace("[Url]", link));
                        SendCommand(Commands.ResetPassword, new { result = true });
                    }
                    else
                    {
                        SendCommand(Commands.ResetPassword, new { result = false });
                    }
                    break;
                }

                default:
                {
                    break;
                }
                }
            }
            catch (Exception ex)
            {
                OnExeptionOccured(MethodInfo.GetCurrentMethod().Name, ex.Message);

                if (InvalidCmdCount >= 5)
                {
                    this.Disconnect();
                }
                else
                {
                    InvalidCmdCount = InvalidCmdCount + 1;
                }
            }
        }
Esempio n. 2
0
        private void ProccessNextSite()
        {
            bool mustClear = false;
            var  url       = "http://www.rizeh.com";

            var vSite       = DatabaseManager.GetRandomSite(this.UserId, LastSiteId, this.ClientIP, tblVisitedSites, out mustClear);
            var status      = DatabaseManager.GetStatus(this.UserId);
            var siteOwnerId = DatabaseManager.GetSiteOwnerId(LastSiteId);

            if (mustClear)
            {
                tblVisitedSites.Clear();
            }

            if (vSite != null)
            {
                url        = vSite.Url;
                LastSiteId = vSite.SiteId;

                if (tblVisitedSites.Rows.Find(vSite.SiteId) == null)
                {
                    var row = tblVisitedSites.NewRow();
                    row["SiteId"] = vSite.SiteId;
                    tblVisitedSites.Rows.Add(row);
                }

                var data = new
                {
                    url        = url,
                    totalUsers = status.TotalUsers,
                    sites      = status.TotalSites,
                    scores     = status.Scores,
                    onlines    = GetTotalOnlines() //RizehServer.TotalOnline
                };

                SendCommand(Commands.NextSite, data);


                //ارسال برای صاحب سایت
                try
                {
                    var target = RizehServer.Clients.SingleOrDefault(c => c.UserId == siteOwnerId);
                    if (target != null)
                    {
                        status = DatabaseManager.GetStatus(siteOwnerId);
                        target.UpdateStatus("scores", status.Scores);
                    }
                    RizehServer.ProccessUserWebsiteList(siteOwnerId);
                }
                catch (Exception ex)
                {
                    OnExeptionOccured(MethodInfo.GetCurrentMethod().Name, ex.Message);
                }
            }
            else
            {
                var data = new
                {
                    url        = url,
                    totalUsers = status.TotalUsers,
                    sites      = status.TotalSites,
                    scores     = status.Scores,
                    onlines    = GetTotalOnlines()
                };

                SendCommand(Commands.NextSite, data);
            }
        }