Пример #1
0
 public static ExchangeStatus CurrentExchangeStatus(Exchange exchange)
 {
     try
     {
         if (IsDateBusinessDay(DateTime.Now))
         {
             if (m_oOpeningHours == null)
             {
                 GoogleHistoricalDataInterpreter oGHDI = new GoogleHistoricalDataInterpreter();
                 m_oOpeningHours = oGHDI.GetStartEndOfExchange(Instruments[0], exchange); //ugly, what happens when the first instruments doesn't exists at the exchange...?
             }
             if ((DateTime.Now >= m_oOpeningHours.Item1 && DateTime.Now <= m_oOpeningHours.Item2))
             {
                 m_oExchangeStatus = ExchangeStatus.Open;
             }
             else
             {
                 m_oExchangeStatus = ExchangeStatus.Closed;
             }
         }
         else
         {
             m_oExchangeStatus = ExchangeStatus.Closed;
         }
     }
     catch
     {
         m_oExchangeStatus = ExchangeStatus.Undefined;
     }
     return(m_oExchangeStatus);
 }
Пример #2
0
        private async Task HandleReactionInAdd(SocketReaction reaction, IUserMessage msg)
        {
            if (reaction.Emote.Equals(OneEmote) && reaction.UserId == P1.User.Id)
            {
                P1.Accepted = true;
                RestartTimer();
            }
            else if (reaction.Emote.Equals(TwoEmote) && reaction.UserId == P2.User.Id)
            {
                P2.Accepted = true;
                RestartTimer();
            }

            if (P1.Accepted && P2.Accepted)
            {
                State = ExchangeStatus.AcceptP1;
                Tips  = $"{P1.User.Mention} daj {AcceptEmote} aby zaakceptować, lub {DeclineEmote} aby odrzucić.";

                await msg.RemoveAllReactionsAsync();

                await msg.ModifyAsync(x => x.Embed = BuildEmbed());

                await msg.AddReactionsAsync(new IEmote[] { AcceptEmote, DeclineEmote });
            }
        }
Пример #3
0
 public ObjInfo(Object _obj)
 {
     this.Obj          = _obj;
     this.InsStatus    = ExchangeStatus.none;
     this.UpdateStatus = ExchangeStatus.none;
     this.ApplyStatus  = ExchangeStatus.none;
     Instance          = null;
 }
Пример #4
0
 public RefreashedEventArgs(double currentValue, double lastValue, StockStatus status, ExchangeStatus decision,
                            double currentBTC, double currentJPY)
 {
     this.currentValue = currentValue;
     this.lastValue    = lastValue;
     this.status       = status;
     this.decision     = decision;
     this.currentBTC   = currentBTC;
     this.currentJPY   = currentJPY;
 }
Пример #5
0
        public void SetMemberValue(double buyThreshold = 0, double sellThreshold = 0, double requestFrequency = 10, double alertUpper = 0, double alertLower = 0)
        {
            BuyThreshold  = buyThreshold;
            SellThreshold = sellThreshold;
            SetSleepTime(requestFrequency);
            AlertUpper = alertUpper;
            AlertLower = alertLower;

            IsAlert  = false;
            Decision = ExchangeStatus.doNothing;
        }
Пример #6
0
 public void ResetMemeber(string accessKey, string accessSecret)
 {
     AccessKey    = accessKey;
     AccessSecret = accessSecret;
     blance       = new GetBalanceApi(AccessKey, AccessSecret);
     blance.start();
     CurrentBitcoinNum = getBitcoinNum();
     CurrentCashNum    = getCashNum();
     LastBuyValue      = getLastBuyValue();
     LastSellValue     = getLastSellValue();
     NextStep          = calNextStep();
 }
Пример #7
0
        public void SetMemberValue(Hashtable datas)
        {
            BuyThreshold  = datas.ContainsKey("BuyThreshold") ? Convert.ToDouble(datas["BuyThreshold"]) : 0;
            SellThreshold = datas.ContainsKey("SellThreshold") ? Convert.ToDouble(datas["SellThreshold"]) : 0;
            AlertUpper    = datas.ContainsKey("AlertUpper") ? Convert.ToDouble(datas["AlertUpper"]) : 0;
            AlertLower    = datas.ContainsKey("AlertLower") ? Convert.ToDouble(datas["AlertLower"]) : 0;
            double requestFrequency = datas.ContainsKey("RequestFrequency") ? Convert.ToDouble(datas["RequestFrequency"]) : 2;

            SetSleepTime(requestFrequency);

            IsAlert  = false;
            Decision = ExchangeStatus.doNothing;
        }
Пример #8
0
        public ExchangeSession(IUser owner, IUser exchanger, IConfig config) : base(owner)
        {
            State = ExchangeStatus.Add;
            Event = ExecuteOn.AllEvents;
            AddParticipant(exchanger);
            RunMode   = RunMode.Sync;
            TimeoutMs = 120000;
            _config   = config;

            Message = null;

            OnExecute = ExecuteAction;
            OnDispose = DisposeAction;
        }
Пример #9
0
 protected void Page_Load(object sender, EventArgs e)
 {
     this.btnSeach.Click += new EventHandler(this.btnSeach_Click);
     this.DelBtn.Click   += new EventHandler(this.DelBtn_Click);
     if (base.Request.Params.AllKeys.Contains <string>("status"))
     {
         int i = 0;
         if (base.Request["status"].ToString().bInt(ref i))
         {
             this.status = (ExchangeStatus)i;
         }
     }
     if (!base.IsPostBack)
     {
         this.BindData();
     }
 }
Пример #10
0
 protected void Page_Load(object sender, System.EventArgs e)
 {
     this.btnSeach.Click          += new System.EventHandler(this.btnSeach_Click);
     this.DelBtn.Click            += new System.EventHandler(this.DelBtn_Click);
     this.grdProducts.ItemCommand += new System.Web.UI.WebControls.RepeaterCommandEventHandler(this.grdProducts_ItemCommand);
     this.btnDelete.Click         += new System.EventHandler(this.btnDelete_Click);
     string[] allKeys = base.Request.Params.AllKeys;
     if (allKeys.Contains("status"))
     {
         int num = 0;
         if (base.Request["status"].ToString().bInt(ref num))
         {
             this.status = (ExchangeStatus)num;
         }
     }
     if (!base.IsPostBack)
     {
         this.BindData();
     }
 }
Пример #11
0
        public void MainLoop()
        {
            while (true)
            {
                Decision = Refreash();
                if (Trader.CheckTrad(Decision, Ticker.CurrentValue) == ExchangeStatus.buy && firstBuyFlag)
                {
                    firstBuyFlag = false;
                }
                RefreashedEventArgs refreashEA = new RefreashedEventArgs(Ticker.CurrentValue, Ticker.LastValue, Ticker.Status, Decision,
                                                                         Trader.CurrentBitcoinNum, Trader.CurrentCashNum);
                onRefreash(refreashEA);
                if (IsAlert && ((AlertUpper != 0 && Ticker.CurrentValue >= AlertUpper) || (AlertLower != 0 && Ticker.CurrentValue <= AlertLower)))
                {
                    AlertEventArgs alertEA = new AlertEventArgs(Ticker.CurrentValue, AlertUpper, AlertLower);
                    alerted(alertEA);
                }

                Thread.Sleep((int)SleepTime);
            }
        }
        public CandidateMagicLinkExchangeResult(Candidate candidate)
        {
            Candidate = candidate;

            if (Candidate == null)
            {
                Status = ExchangeStatus.Invalid;
            }
            else if (Candidate.MagicLinkTokenAlreadyExchanged())
            {
                Status = ExchangeStatus.AlreadyExchanged;
            }
            else if (Candidate.MagicLinkTokenExpired())
            {
                Status = ExchangeStatus.Expired;
            }
            else
            {
                Status = ExchangeStatus.Valid;
            }
        }
Пример #13
0
        private async Task SetStatusAsync(string exchangeName, ExchangeStatus exchangeStatus)
        {
            ExchangeSettings exchangeSettings = await GetByNameAsync(exchangeName);

            if (exchangeSettings == null)
            {
                throw new EntityNotFoundException();
            }

            if (exchangeSettings.Status == exchangeStatus)
            {
                return;
            }

            exchangeSettings = exchangeSettings.Clone();

            exchangeSettings.Status = exchangeStatus;

            await _exchangeSettingsRepository.UpdateAsync(exchangeSettings);

            _cache.Set(exchangeSettings);
        }
Пример #14
0
        public ExchangeStatus CheckTrad(ExchangeStatus exStatus, double currentValue)
        {
            ExchangeStatus returnValue = ExchangeStatus.doNothing;

            if (exStatus == NextStep)
            {
                switch (exStatus)
                {
                case ExchangeStatus.buy:
                    buy(currentValue);
                    NextStep    = ExchangeStatus.sell;
                    returnValue = ExchangeStatus.buy;
                    break;

                case ExchangeStatus.sell:
                    sell(currentValue);
                    NextStep    = ExchangeStatus.buy;
                    returnValue = ExchangeStatus.sell;
                    break;
                }
            }
            return(returnValue);
        }
Пример #15
0
        public async Task <IHttpActionResult> UpdateExchangeStatus([FromBody] ExchangeStatus i_Status)
        {
            string nickname = Thread.CurrentPrincipal.Identity.Name;

            using (CarWatchDBEntities entities = new CarWatchDBEntities())
            {
                Exchange result = await entities.Exchanges.FirstOrDefaultAsync(e => (e.ConsumerNickname == nickname || e.ProviderNickname == nickname) && e.Status == 0);

                if (result == null)
                {
                    return(BadRequest("you are not involved with an open exchange."));
                }

                if (i_Status.status == (int)e_ExchangeStatus.Success)
                {
                    pushToClient(result.ConsumerNickname, "exchangeStatusUpdate", k_ExchangeSuccessMessage);
                    pushToClient(result.ProviderNickname, "exchangeStatusUpdate", k_ExchangeSuccessMessage);
                    FacebookAccount proposer = await entities.FacebookAccounts.FirstOrDefaultAsync(e => e.Nickname == result.ProviderNickname);

                    proposer.Rank += 5;
                }
                else if (i_Status.status == (int)e_ExchangeStatus.CanceledBySearcherPriorArrival)
                {
                    pushToClient(result.ConsumerNickname, "exchangeStatusUpdate", k_ExchangeCancelBySearcherMessage);
                    pushToClient(result.ProviderNickname, "exchangeStatusUpdate", k_ExchangeCancelBySearcherMessage);
                }
                else if (i_Status.status == (int)e_ExchangeStatus.CanceledByProposerPriorArrival)
                {
                    pushToClient(result.ConsumerNickname, "exchangeStatusUpdate", k_ExchangeCancelByProposerMessage);
                    pushToClient(result.ProviderNickname, "exchangeStatusUpdate", k_ExchangeCancelByProposerMessage);
                    FacebookAccount proposerAccount = await entities.FacebookAccounts.FirstOrDefaultAsync(e => e.Nickname == result.ProviderNickname);

                    proposerAccount.Rank -= 2;
                    if (proposerAccount.Rank < 0)
                    {
                        proposerAccount.Rank = 0;
                    }
                }
                else if (i_Status.status == (int)e_ExchangeStatus.CancelNoParkingSpot)
                {
                    pushToClient(result.ConsumerNickname, "exchangeStatusUpdate", k_ExchangeCancelNoParkingSpotMessage);
                    pushToClient(result.ProviderNickname, "exchangeStatusUpdate", k_ExchangeCancelNoParkingSpotMessage);
                    FacebookAccount proposerAccount = await entities.FacebookAccounts.FirstOrDefaultAsync(e => e.Nickname == result.ProviderNickname);

                    proposerAccount.Rank -= 3;
                    if (proposerAccount.Rank < 0)
                    {
                        proposerAccount.Rank = 0;
                    }
                }
                else
                {
                    return(BadRequest("Illegal status code."));
                }
                result.Status        = i_Status.status;
                result.TimeExchanged = DateTime.UtcNow;
                await entities.SaveChangesAsync();

                return(Ok(result));
            }
        }
Пример #16
0
 private void writeLog(double moveNum, double currentCash, double currentBitcoin, ExchangeStatus action, double serFee)
 {
     using (StreamWriter logStream = new StreamWriter("bitcoin.log", true))
     {
         logStream.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{5}", DateTime.UtcNow.ToString(), moveNum.ToString(), currentCash.ToString(),
                             currentBitcoin.ToString(), action.ToString(), serFee.ToString());
     }
 }
    // 接收WebRPC回傳
    void OnWebRpcResponse(OperationResponse operationResponse)
    {
        if (operationResponse.ReturnCode != 0)
        {
            Debug.Log("WebRPC 操作失敗. Response: " + operationResponse.ToStringFull());
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
            return;
        }
        WebRpcResponse webRpcResponse = new WebRpcResponse(operationResponse);

        if (webRpcResponse.ReturnCode != 0)
        {
            Debug.Log("WebRPC '" + webRpcResponse.Name + "發生問題. Error: " + webRpcResponse.ReturnCode + " Message: " + webRpcResponse.DebugMessage);
            return;
        }
        Dictionary <string, object> parameters = webRpcResponse.Parameters;

        foreach (KeyValuePair <string, object> pair in parameters)
        {
            countObject++;
            if (countObject == parameters.Count)
            {
                tempReturnValue += string.Format(@"""{0}"" : ""{1}""", pair.Key, pair.Value);
            }
            else
            {
                tempReturnValue += string.Format(@"""{0}"" : ""{1}""", pair.Key, pair.Value) + ", ";
            }
        }
        //判斷事件
        if ((string)parameters["callnumber"] == "1")
        {
            contractStatus = JsonUtility.FromJson <ContractStatus>("{" + tempReturnValue + "}");
        }
        else if ((string)parameters["callnumber"] == "2")
        {
            listenEvent_New = JsonUtility.FromJson <ListenEvent_New>("{" + tempReturnValue + "}");
            waitMessage     = false;
            listenStatus    = "finished";
        }
        else if ((string)parameters["callnumber"] == "3")
        {
            allowance       = JsonUtility.FromJson <Allowance>("{" + tempReturnValue + "}");
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
            CheckBalanceOf();
        }
        else if ((string)parameters["callnumber"] == "4")
        {
            balanceOf       = JsonUtility.FromJson <BalanceOf>("{" + tempReturnValue + "}");
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
        }
        else if ((string)parameters["callnumber"] == "5")
        {
            giveApprove     = JsonUtility.FromJson <GiveApprove>("{" + tempReturnValue + "}");
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
        }
        else if ((string)parameters["callnumber"] == "6")
        {
            twoPointDeal    = JsonUtility.FromJson <TwoPointDeal>("{" + tempReturnValue + "}");
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
        }
        else if ((string)parameters["callnumber"] == "7")
        {
            putExchange     = JsonUtility.FromJson <PutExchange>("{" + tempReturnValue + "}");
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
        }
        else if ((string)parameters["callnumber"] == "8")
        {
            lookExchange_Self = JsonUtility.FromJson <LookExchange_Self>("{" + tempReturnValue + "}");
            transformStatus   = "finished";
            waitProcess       = "";
            listenStatus      = "finished";
            ChangbuttonOnOrOff(true);
            CheckBalanceOf();
        }
        else if ((string)parameters["callnumber"] == "9")
        {
            lookExchange_Other = JsonUtility.FromJson <LookExchange_Other>("{" + tempReturnValue + "}");
            transformStatus    = "finished";
            waitProcess        = "";
            listenStatus       = "finished";
            ChangbuttonOnOrOff(true);
            StartLookExchange_Self();
        }
        else if ((string)parameters["callnumber"] == "10")
        {
            exchangeStatus  = JsonUtility.FromJson <ExchangeStatus>("{" + tempReturnValue + "}");
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
        }
        else if ((string)parameters["callnumber"] == "11")
        {
            cancelExchange  = JsonUtility.FromJson <CancelExchange>("{" + tempReturnValue + "}");
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
        }
        else if ((string)parameters["callnumber"] == "12")
        {
            exchangeItem    = JsonUtility.FromJson <ExchangeItem>("{" + tempReturnValue + "}");
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
        }
        else if ((string)parameters["callnumber"] == "13")
        {
            buyLottery      = JsonUtility.FromJson <BuyLottery>("{" + tempReturnValue + "}");
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
        }
        else if ((string)parameters["callnumber"] == "14")
        {
            lookLottery     = JsonUtility.FromJson <LookLottery>("{" + tempReturnValue + "}");
            transformStatus = "finished";
            waitProcess     = "";
            listenStatus    = "finished";
            ChangbuttonOnOrOff(true);
            CheckBalanceOf();
        }
        //清空暫存內容
        countObject     = 0;
        tempReturnValue = "";
    }
Пример #18
0
        public async Task <int> PingAsync()
        {
            ExchangeStatus pingStatus = await _bitfinexApiManager.GetExchangeStatus();

            return((int)pingStatus);
        }
Пример #19
0
 public static ObjectList<AIS.SN.Model.DomainObjects.Views.ExchangeRequestAddress> GetByStatus(ExchangeStatus status, Area filterArea)
 {
     System.Collections.Generic.List<long> addresses = new System.Collections.Generic.List<long>();
     ObjectList<ExchangeRequest> exchangeRequestsGroup = ExchangeRequest.GetExchangeRequestsGroup(ExchangeRequestType.Address, status);
     ObjectList<AIS.SN.Model.DomainObjects.Views.ExchangeRequestAddress> list3 = new ObjectList<AIS.SN.Model.DomainObjects.Views.ExchangeRequestAddress>();
     foreach (ExchangeRequest request in exchangeRequestsGroup)
     {
         AIS.SN.Model.DomainObjects.Views.ExchangeRequestAddress address = Serializer.FromXml<AIS.SN.Model.DomainObjects.Views.ExchangeRequestAddress>(request.XmlIn);
         address.DateIn = request.DateIn;
         address.ExchangeRequestId = request.Id;
         address.LocalAddressId = request.AddressId;
         if (address.LocalAddressId != LocalAddress.Null.Id)
         {
             addresses.Add(address.LocalAddressId);
         }
         address.Address = string.Concat((string[]) new string[] { ((address.LastChangeDate != Constants.NullDate) ? ((string) address.LastChangeDate.ToShortDateString()) : ((string) address.DateIn.ToShortDateString())), ";", address.StreetSocr, " ", address.Street, ";", address.HouseSocr, " ", address.House, ";", address.FlatSocr, " ", address.Flat });
         list3.Add(address);
     }
     ObjectList<AIS.SN.Model.DomainObjects.Views.ExchangeRequestAddress> list4 = new ObjectList<AIS.SN.Model.DomainObjects.Views.ExchangeRequestAddress>();
     if ((filterArea == null) || (filterArea == Area.Null))
     {
         return list3.ApplySort("Address");
     }
     Area lhs = new Area {
         StatusTemporary = 1
     };
     lhs.SaveChanges();
     lhs.SaveAddresses(addresses);
     System.Collections.Generic.IList<long> filteredApartmentLocalAddresses = Area.GetFilteredApartmentLocalAddresses(lhs, filterArea);
     for (int i = 0; i < list3.get_Count(); i = (int) (i + 1))
     {
         long num2 = (list3.get_Item(i).RemoteAddressId == 0L) ? list3.get_Item(i).LocalAddressId : list3.get_Item(i).RemoteAddressId;
         if (filteredApartmentLocalAddresses.Contains(num2))
         {
             list4.Add(list3.get_Item(i));
         }
     }
     return list4.ApplySort("Address");
 }
Пример #20
0
 public ObjectList<ExchangeRequest> GetDuplicatesByOutId(ExchangeRequestType type, ExchangeStatus status)
 {
     return Mappers.ExchangeRequestMapper.GetDuplicatesByOutId(base.Id, this.OutId, type, status);
 }
Пример #21
0
        private async Task <bool> HandleUserReactionInAccept(SocketReaction reaction, PlayerInfo player, IUserMessage msg)
        {
            bool end = false;

            if (reaction.UserId == player.User.Id)
            {
                if (reaction.Emote.Equals(AcceptEmote))
                {
                    if (State != ExchangeStatus.AcceptP2)
                    {
                        RestartTimer();
                        State = ExchangeStatus.AcceptP2;
                        Tips  = $"{P2.User.Mention} daj {AcceptEmote} aby zaakceptować, lub {DeclineEmote} aby odrzucić.";
                    }
                    else
                    {
                        Tips = $"Wymiana zakończona!";
                        end  = true;

                        if (P1.Cards.Count == 0 && P2.Cards.Count == 0)
                        {
                            return(end);
                        }

                        using (var db = new Database.UserContext(_config))
                        {
                            var user1 = await db.GetUserOrCreateAsync(P1.User.Id);

                            var user2 = await db.GetUserOrCreateAsync(P2.User.Id);

                            double avgValueP1 = P1.Cards.Sum(x => x.MarketValue) / ((P1.Cards.Count == 0) ? 1 : P1.Cards.Count);
                            double avgValueP2 = P2.Cards.Sum(x => x.MarketValue) / ((P2.Cards.Count == 0) ? 1 : P2.Cards.Count);
                            if (double.IsInfinity(avgValueP1))
                            {
                                avgValueP1 = double.MinValue;
                            }
                            if (double.IsInfinity(avgValueP2))
                            {
                                avgValueP2 = double.MinValue;
                            }

                            var divP1 = P1.Cards.Count / ((avgValueP1 == 0) ? 1 : avgValueP1);
                            var divP2 = P2.Cards.Count / ((avgValueP2 == 0) ? 1 : avgValueP2);
                            if (double.IsInfinity(divP1))
                            {
                                divP1 = double.MinValue;
                            }
                            if (double.IsInfinity(divP2))
                            {
                                divP2 = double.MinValue;
                            }

                            var exchangeRateP1 = divP2 / ((P1.Cards.Count == 0) ? (divP2 * 0.5) : divP1);
                            var exchangeRateP2 = divP1 / ((P2.Cards.Count == 0) ? (divP1 * 0.5) : divP2);
                            if (double.IsInfinity(exchangeRateP1))
                            {
                                exchangeRateP1 = double.MinValue;
                            }
                            if (double.IsInfinity(exchangeRateP2))
                            {
                                exchangeRateP2 = double.MinValue;
                            }

                            foreach (var c in P1.Cards)
                            {
                                var card = user1.GameDeck.Cards.FirstOrDefault(x => x.Id == c.Id);
                                if (card != null)
                                {
                                    card.Active = false;
                                    card.TagList.Clear();
                                    card.Affection -= 1.5;

                                    var valueDiff = card.MarketValue - exchangeRateP1;
                                    var changed   = card.MarketValue - valueDiff * 0.735;
                                    if (!double.IsInfinity(changed) && !double.IsInfinity(valueDiff))
                                    {
                                        card.MarketValue = changed;
                                    }

                                    if (card.FirstIdOwner == 0)
                                    {
                                        card.FirstIdOwner = user1.Id;
                                    }

                                    user1.GameDeck.Cards.Remove(card);
                                    user2.GameDeck.Cards.Add(card);

                                    user2.GameDeck.RemoveCharacterFromWishList(card.Character);
                                    user2.GameDeck.RemoveCardFromWishList(card.Id);
                                }
                            }

                            foreach (var c in P2.Cards)
                            {
                                var card = user2.GameDeck.Cards.FirstOrDefault(x => x.Id == c.Id);
                                if (card != null)
                                {
                                    card.Active = false;
                                    card.TagList.Clear();
                                    card.Affection -= 1.5;

                                    var valueDiff = card.MarketValue - exchangeRateP2;
                                    var changed   = card.MarketValue - valueDiff * 0.735;
                                    if (!double.IsInfinity(changed) && !double.IsInfinity(valueDiff))
                                    {
                                        card.MarketValue = changed;
                                    }

                                    if (card.FirstIdOwner == 0)
                                    {
                                        card.FirstIdOwner = user2.Id;
                                    }

                                    user2.GameDeck.Cards.Remove(card);
                                    user1.GameDeck.Cards.Add(card);

                                    user1.GameDeck.RemoveCharacterFromWishList(card.Character);
                                    user1.GameDeck.RemoveCardFromWishList(card.Id);
                                }
                            }

                            await db.SaveChangesAsync();

                            QueryCacheManager.ExpireTag(new string[] { $"user-{P1.User.Id}", $"user-{P2.User.Id}", "users" });
                        }
                    }
                }
                else if (reaction.Emote.Equals(DeclineEmote))
                {
                    RestartTimer();
                    Tips = $"{player.User.Mention} odrzucił propozycje wymiany!";
                    end  = true;
                }

                if (msg != null)
                {
                    await msg.ModifyAsync(x => x.Embed = BuildEmbed());
                }
            }
            return(end);
        }
Пример #22
0
 public static ObjectList<ExchangeRequest> GetExchangeRequestsGroup(ExchangeRequestType type, ExchangeStatus status)
 {
     return Mappers.ExchangeRequestMapper.GetExchangeRequestsGroup(type, status);
 }
Пример #23
0
 public static ObjectList<ExchangeRequest> FindBy(ExchangeRequestType type, ExchangeStatus status)
 {
     return Mappers.ExchangeRequestMapper.FindBy(type, status);
 }
Пример #24
0
 public ObjInfo(Object _obj)
 {
     this.Obj    = _obj;
     this.status = ExchangeStatus.none;
 }
Пример #25
0
        public async Task <IActionResult> StartMonitorAsync([FromBody] ExchangeRequestModel model)
        {
            var user = await _dbContext.GetCurrentUserAsync(User);

            if (user == null)
            {
                return(NotFound(new { error = "User not found" }));
            }

            if (string.IsNullOrEmpty(user.TempAddress))
            {
                return(BadRequest(new { error = "Not set temp address" }));
            }
            var item = _dbContext.ExchangeStatuses.FirstOrDefault(s => s.StartTx == model.Tx);

            if (item == null)
            {
                var rate = await GetRateAsync(model.Count);

                item = new ExchangeStatus
                {
                    StartTx       = model.Tx,
                    CurrentTx     = model.Tx,
                    CurrentStep   = 0,
                    Rate          = rate.rate,
                    CreatedByUser = user,
                    EthAmount     = rate.amount.ToString(),
                    TokenCount    = model.Count
                };
                await _dbContext.AddAsync(item);

                await _dbContext.SaveChangesAsync();
            }

            //if (string.IsNullOrEmpty(user.ExchangerContract))
            //{
            //    var rate = await GetRateAsync(model.Count);
            //    if (string.IsNullOrEmpty(user.Wallet) || !await _contract.CheckWhitelistAsync(user.Wallet))
            //    {
            //        return BadRequest(new { rate, user.Wallet, error = "Not in whitelist" });
            //    }
            //    var addr = await _dbContext.Addresses.FindAsync(user.TempAddress);
            //    string newContractAddr = await _contract.CreateExchangerAsync(
            //        _crypto.Decrypt(addr.Exchanger.StringToByteArray()),
            //        user.Wallet,
            //        new HexBigInteger(rate.amount),
            //        new HexBigInteger(rate.rate));
            //    var hash = await _contract.AddAddressToWhitelistAsync(newContractAddr);
            //    await _contract.WaitReciept(hash);
            //    user.ExchangerContract = newContractAddr;
            //    await _dbContext.SaveChangesAsync();

            //    await _dbContext.AddAsync(new ExchangeStatus
            //    {
            //        StartTx = model.Tx,
            //        CurrentTx = model.Tx,
            //        CreatedByUser = user,
            //        EthAmount = rate.amount.ToString(),
            //    });
            //    user.TempAddress = null;
            //    await _dbContext.SaveChangesAsync();
            //}

            return(Ok(item.Id));
        }
Пример #26
0
        private async Task <bool> HandleUserReactionInAccept(SocketReaction reaction, PlayerInfo player, IUserMessage msg)
        {
            bool end = false;

            if (reaction.UserId == player.User.Id)
            {
                if (reaction.Emote.Equals(AcceptEmote))
                {
                    if (State != ExchangeStatus.AcceptP2)
                    {
                        RestartTimer();
                        State = ExchangeStatus.AcceptP2;
                        Tips  = $"{P2.User.Mention} daj {AcceptEmote} aby zaakceptować, lub {DeclineEmote} aby odrzucić.";
                    }
                    else
                    {
                        Tips = $"Wymiana zakończona!";
                        end  = true;

                        using (var db = new Database.UserContext(_config))
                        {
                            var user1 = await db.GetUserOrCreateAsync(P1.User.Id);

                            var user2 = await db.GetUserOrCreateAsync(P2.User.Id);

                            foreach (var c in P1.Cards)
                            {
                                var card = user1.GameDeck.Cards.FirstOrDefault(x => x.Id == c.Id);
                                if (card != null)
                                {
                                    card.Tags   = null;
                                    card.Active = false;
                                    user1.GameDeck.Cards.Remove(card);
                                    user2.GameDeck.Cards.Add(card);
                                }
                            }

                            foreach (var c in P2.Cards)
                            {
                                var card = user2.GameDeck.Cards.FirstOrDefault(x => x.Id == c.Id);
                                if (card != null)
                                {
                                    card.Tags   = null;
                                    card.Active = false;
                                    user2.GameDeck.Cards.Remove(card);
                                    user1.GameDeck.Cards.Add(card);
                                }
                            }

                            await db.SaveChangesAsync();

                            QueryCacheManager.ExpireTag(new string[] { $"user-{P1.User.Id}", $"user-{P2.User.Id}", "users" });
                        }
                    }
                }
                else if (reaction.Emote.Equals(DeclineEmote))
                {
                    RestartTimer();
                    Tips = $"{player.User.Mention} odrzucił propozycje wymiany!";
                    end  = true;
                }

                if (msg != null)
                {
                    await msg.ModifyAsync(x => x.Embed = BuildEmbed());
                }
            }
            return(end);
        }