public async Task <ActionResult> Create(string currency, string returnUrl)
        {
            var user = await UserManager.FindValidByIdAsync(User.Identity.GetUserId());

            var currencyData = await CurrencyReader.GetCurrency(currency);

            if (currencyData == null || user == null)
            {
                ViewBag.Message = $"Currency {currency} not found.";
                return(View("Error"));
            }

            if (currencyData.Status == CurrencyStatus.Maintenance || currencyData.Status == CurrencyStatus.Offline)
            {
                ViewBag.HideSupportLink = true;
                ViewBag.SubTitle        = $"Status: {currencyData.Status}";
                ViewBag.Message         = $"Unfortunately we are unable to process your withdrawal at this time.<br /><br />Status: {currencyData.Status}<br />Reason: {(string.IsNullOrEmpty(currencyData.StatusMessage) ? "Unknown" : currencyData.StatusMessage)}";
                return(View("Error"));
            }

            if (currencyData.CurrencyId == Constant.NZDT_ID && !UserVerificationReader.IsVerified(user.VerificationLevel))
            {
                return(View("NotVerified"));
            }

            return(View(await CreateWithdrawModel(user, new WithdrawCurrencyModel
            {
                Name = currencyData.Name,
                Symbol = currencyData.Symbol,
                ReturnUrl = GetLocalReturnUrl(returnUrl)
            })));
        }
Example #2
0
        public async Task <ApiUserDepositAddressResponse> GetUserDepositAddress(ApiUserDepositAddressRequest request)
        {
            var currency = request.CurrencyId.HasValue
                                        ? await CurrencyReader.GetCurrency(request.CurrencyId.Value).ConfigureAwait(false)
                                        : await CurrencyReader.GetCurrency(request.Currency).ConfigureAwait(false);

            if (currency == null)
            {
                return new ApiUserDepositAddressResponse {
                           Success = false, Error = "Currency not found."
                }
            }
            ;

            var addressResponse = await AddressReader.GetAddress(request.UserId.ToString(), currency.CurrencyId).ConfigureAwait(false);

            if (addressResponse == null || !string.IsNullOrEmpty(addressResponse.ErrorMessage))
            {
                return new ApiUserDepositAddressResponse {
                           Success = false, Error = addressResponse.ErrorMessage ?? "Currency not found."
                }
            }
            ;

            return(new ApiUserDepositAddressResponse
            {
                Success = true,
                Data = new ApiDepositAddressData
                {
                    Currency = currency.Symbol,
                    Address = addressResponse.AddressData,
                    BaseAddress = currency.BaseAddress
                }
            });
        }
        private async Task <WithdrawCurrencyModel> CreateWithdrawModel(Cryptopia.Entity.ApplicationUser user, WithdrawCurrencyModel model)
        {
            var currencyData = await CurrencyReader.GetCurrency(model.Symbol);

            var balanceData = await BalanceReader.GetCurrencyBalance(User.Identity.GetUserId(), currencyData.CurrencyId);

            var addressBook = await AddressBookReader.GetAddressBook(User.Identity.GetUserId(), currencyData.CurrencyId);

            var verificationData = await UserVerificationReader.GetVerificationStatus(User.Identity.GetUserId());

            var estimatedCoinNzd = await BalanceEstimationService.GetNZDPerCoin(currencyData.CurrencyId);

            model                  = user.GetTwoFactorModel(TwoFactorComponent.Withdraw, model);
            model.Name             = currencyData.Name;
            model.CurrencyId       = currencyData.CurrencyId;
            model.CurrencyType     = currencyData.Type;
            model.Symbol           = balanceData.Symbol;
            model.Balance          = balanceData.Available;
            model.Fee              = currencyData.WithdrawFee;
            model.WithdrawFeeType  = currencyData.WithdrawFeeType;
            model.MinWithdraw      = currencyData.WithdrawMin;
            model.MaxWithdraw      = currencyData.WithdrawMax;
            model.AddressBookOnly  = !user.IsUnsafeWithdrawEnabled;
            model.AddressBook      = addressBook;
            model.AddressType      = currencyData.AddressType;
            model.HasWithdrawLimit = verificationData.Limit > 0;
            model.WithdrawLimit    = verificationData.Limit;
            model.WithdrawTotal    = verificationData.Current;
            model.EstimatedCoinNZD = estimatedCoinNzd;
            model.Instructions     = currencyData.WithdrawInstructions;
            model.Message          = currencyData.WithdrawMessage;
            model.MessageType      = currencyData.WithdrawMessageType.ToString().ToLower();
            model.Decimals         = currencyData.CurrencyDecimals;
            return(model);
        }
Example #4
0
 public async Task <ActionResult> CreateTradePair()
 {
     return(View("CreateTradePairModal", new CreateTradePairModel
     {
         Currencies = await CurrencyReader.GetCurrencies()
     }));
 }
        public async Task <PaytopiaPaymentModel> AdminGetPayment(int id)
        {
            using (var context = DataContextFactory.CreateReadOnlyContext())
            {
                var item = await context.PaytopiaPayments
                           .AsNoTracking()
                           .Where(x => x.Id == id)
                           .Select(payment => new PaytopiaPaymentModel
                {
                    Id            = payment.Id,
                    Type          = payment.PaytopiaItem.Type,
                    CurrencyId    = payment.PaytopiaItem.CurrencyId,
                    Amount        = payment.Amount,
                    Status        = payment.Status,
                    UserName      = payment.User.UserName,
                    IsAnonymous   = payment.IsAnonymous,
                    Begins        = payment.Begins,
                    Ends          = payment.Ends,
                    Timestamp     = payment.Timestamp,
                    TransferId    = payment.TransferId,
                    RefundId      = payment.RefundId,
                    ReferenceCode = payment.ReferenceCode,
                    ReferenceId   = payment.ReferenceId,
                    RefundReason  = payment.RefundReason,
                    RequestData   = payment.RequestData,
                }).FirstOrDefaultNoLockAsync().ConfigureAwait(false);

                var currency = await CurrencyReader.GetCurrency(item.CurrencyId).ConfigureAwait(false);

                item.Symbol = currency.Symbol;

                if (item.ReferenceId > 0)
                {
                    if (item.Type == PaytopiaItemType.FeaturedCurrency || item.Type == PaytopiaItemType.LottoSlot || item.Type == PaytopiaItemType.RewardSlot || item.Type == PaytopiaItemType.TipSlot)
                    {
                        var refCurrency = await CurrencyReader.GetCurrency(item.ReferenceId).ConfigureAwait(false);

                        if (refCurrency != null)
                        {
                            item.ReferenceName   = refCurrency.Name;
                            item.ReferenceAlgo   = refCurrency.AlgoType;
                            item.ReferenceSymbol = refCurrency.Symbol;
                        }
                    }
                    else if (item.Type == PaytopiaItemType.FeaturedPool || item.Type == PaytopiaItemType.PoolListing)
                    {
                        var refPool = await PoolReader.GetPool(item.ReferenceId).ConfigureAwait(false);

                        if (refPool != null)
                        {
                            item.ReferenceName   = refPool.Name;
                            item.ReferenceAlgo   = refPool.AlgoType;
                            item.ReferenceSymbol = refPool.Symbol;
                        }
                    }
                }

                return(item);
            }
        }
        public async Task <DisplayAddressModel> GetDisplayAddress(string userId, string symbol)
        {
            var currentUser = new Guid(userId);
            var currency    = await CurrencyReader.GetCurrency(symbol).ConfigureAwait(false);

            if (currency == null)
            {
                return(null);
            }

            using (var context = ExchangeDataContextFactory.CreateContext())
            {
                var address = await context.Address
                              .Where(x => x.CurrencyId == currency.CurrencyId && x.UserId == currentUser)
                              .FirstOrDefaultNoLockAsync().ConfigureAwait(false);

                return(new DisplayAddressModel
                {
                    AddressData = address?.AddressHash,
                    AddressData2 = currency.BaseAddress,
                    CurrencyId = currency.CurrencyId,
                    CurrencyType = currency.Type,
                    Name = currency.Name,
                    Symbol = currency.Symbol,
                    Instructions = currency.DepositInstructions,
                    Message = currency.DepositMessage,
                    MessageType = currency.DepositMessageType.ToString().ToLower(),
                    QrFormat = currency.QrFormat,
                    AddressType = currency.AddressType
                });
            }
        }
Example #7
0
        public async Task <ActionResult> Create(string currency, string userName, string returnUrl)
        {
            var user = await UserManager.FindValidByIdAsync(User.Identity.GetUserId());

            var currencyData = await CurrencyReader.GetCurrency(currency);

            if (currencyData == null || user == null)
            {
                ViewBag.Message = String.Format(Resources.UserWallet.transferCurrencyNotFoundError, currency);
                return(View("Error"));
            }

            if (currencyData.Status == CurrencyStatus.Maintenance || currencyData.Status == CurrencyStatus.Offline)
            {
                ViewBag.HideSupportLink = true;
                ViewBag.SubTitle        = String.Format("{0}: {1}", Resources.UserWallet.transferCreateStatusLabel, currencyData.Status);
                ViewBag.Message         = $"{Resources.UserWallet.transferCreateErrorMessage} <br /><br /> {Resources.UserWallet.transferCreateStatusLabel}: {currencyData.Status}<br />{Resources.UserWallet.transferCreateReasonLabel}: {(string.IsNullOrEmpty(currencyData.StatusMessage) ? Resources.UserWallet.transferCreateUnknownError : currencyData.StatusMessage)}";
                return(View("Error"));
            }

            var checkUser = await UserReader.GetUserByName(userName);

            return(View(await CreateTransferModel(user, new TransferCurrencyModel
            {
                Name = currencyData.Name,
                Symbol = currencyData.Symbol,
                ReturnUrl = GetLocalReturnUrl(returnUrl),
                UserName = checkUser?.UserName
            })));
        }
Example #8
0
        public async Task <CreateTransferResponseModel> SubmitUserTransfer(ApiSubmitUserTransferRequest request)
        {
            var currency = request.CurrencyId.HasValue
                                ? await CurrencyReader.GetCurrency(request.CurrencyId.Value).ConfigureAwait(false)
                                : await CurrencyReader.GetCurrency(request.Currency).ConfigureAwait(false);

            if (currency == null)
            {
                return new CreateTransferResponseModel {
                           Error = "Currency not found."
                }
            }
            ;

            var receiver = await UserReader.GetUserByName(request.UserName).ConfigureAwait(false);

            if (receiver == null)
            {
                return new CreateTransferResponseModel {
                           Error = "Receiver not found."
                }
            }
            ;

            var response = await TradeService.CreateTransfer(request.UserId.ToString(), new CreateTransferModel
            {
                CurrencyId   = currency.CurrencyId,
                Amount       = request.Amount,
                TransferType = TransferType.User,
                Receiver     = receiver.UserId
            }, true).ConfigureAwait(false);

            return(response);
        }
        public async Task <DataTablesResponse> GetPayments(string userId, DataTablesModel model)
        {
            using (var context = DataContextFactory.CreateReadOnlyContext())
            {
                var query = context.PaytopiaPayments
                            .AsNoTracking()
                            .Where(x => x.UserId == userId)
                            .Select(payment => new PaymentDatatableModel
                {
                    Id          = payment.Id,
                    Type        = payment.PaytopiaItem.Type,
                    CurrencyId  = payment.PaytopiaItem.CurrencyId,
                    Amount      = payment.Amount,
                    Status      = payment.Status,
                    UserName    = payment.User.UserName,
                    IsAnonymous = payment.IsAnonymous,
                    Begins      = payment.Begins,
                    Ends        = payment.Ends,
                    Timestamp   = payment.Timestamp,
                    TransferId  = payment.TransferId,
                    RefundId    = payment.RefundId,
                });

                var currencies = await CurrencyReader.GetCurrencies().ConfigureAwait(false);

                var symbolMap = currencies.ToDictionary(k => k.CurrencyId, v => v.Symbol);
                return(await query.GetDataTableResultNoLockAsync(model, (item) =>
                {
                    item.Symbol = symbolMap[item.CurrencyId];
                }).ConfigureAwait(false));
            }
        }
        public async Task <List <PaytopiaItemModel> > GetItems()
        {
            var cacheResult = await CacheService.GetOrSetHybridAsync(CacheKey.PaytopiaItems(), TimeSpan.FromMinutes(10), async() =>
            {
                using (var context = DataContextFactory.CreateReadOnlyContext())
                {
                    var items = await context.PaytopiaItems
                                .AsNoTracking()
                                .Where(x => x.IsEnabled)
                                .Select(x => new PaytopiaItemModel
                    {
                        Id          = x.Id,
                        Name        = x.Name,
                        Description = x.Description,
                        Price       = x.Price,
                        Type        = x.Type,
                        Category    = x.Category,
                        CurrencyId  = x.CurrencyId
                    }).ToListNoLockAsync().ConfigureAwait(false);

                    foreach (var item in items)
                    {
                        var currency = await CurrencyReader.GetCurrency(item.CurrencyId).ConfigureAwait(false);
                        if (currency != null)
                        {
                            item.Symbol = currency.Symbol;
                        }
                    }
                    return(items);
                }
            }).ConfigureAwait(false);

            return(cacheResult);
        }
Example #11
0
        public static void Run([TimerTrigger("0 0 22 * * *", RunOnStartup = false)] TimerInfo myTimer, TraceWriter log)
        {
            try
            {
                Logger = new Logger(log);
                Logger.Write("Starting new process");

                StockReader  stockReader = new StockReader();
                List <Stock> stocks      = stockReader.ReadShares();

                CurrencyReader    currencyReader    = new CurrencyReader();
                List <Currency>   currencies        = currencyReader.ReadCurrencies();
                CurrencyConverter currencyConverter = new CurrencyConverter(currencies);

                PriceReader priceReader = new PriceReader(currencyConverter);
                stocks = priceReader.ReadValueOfStocks(stocks);

                DynamoWriter stockWriter = new DynamoWriter();
                stockWriter.WriteStockValues(stocks);
                stockWriter.WriteDailyTotal(stocks.Sum(x => x.TotalValue));

                Logger.Write("Process complete");
            }
            catch (Exception e)
            {
                log.Info(String.Format("Exception thrown: {0} - {1}", e.Message, e.StackTrace));
            }
        }
        public async Task <DataTablesResponse> GetPaytopiaHistory(DataTablesModel model)
        {
            using (var context = DataContextFactory.CreateReadOnlyContext())
            {
                var query = context.PaytopiaPayments
                            .AsNoTracking()
                            .Where(x => x.Status == PaytopiaPaymentStatus.Complete && x.PaytopiaItem.Type != PaytopiaItemType.Shares)
                            .Select(payment => new PaytopiaDatatableModel
                {
                    Id         = payment.Id,
                    CurrencyId = payment.PaytopiaItem.CurrencyId,
                    Type       = payment.PaytopiaItem.Type,
                    Amount     = payment.Amount,
                    Timestamp  = payment.Timestamp
                });

                var currencies = await CurrencyReader.GetCurrencies().ConfigureAwait(false);

                var nameMap   = currencies.ToDictionary(k => k.CurrencyId, v => v.Name);
                var symbolMap = currencies.ToDictionary(k => k.CurrencyId, v => v.Symbol);
                return(await query.GetDataTableResultNoLockAsync(model, (item) =>
                {
                    item.Name = nameMap[item.CurrencyId];
                    item.Symbol = symbolMap[item.CurrencyId];
                }).ConfigureAwait(false));
            }
        }
Example #13
0
 public async Task <ActionResult> CreateMarketItem()
 {
     return(View(new CreateMarketItemModel
     {
         Currencies = await CurrencyReader.GetCurrencies(),
         Categories = await MarketplaceReader.GetMarketCategories()
     }));
 }
Example #14
0
        public async Task <ActionResult> SubmitMarketItem(CreateMarketItemModel model)
        {
            if (!ModelState.IsValid)
            {
                model.Currencies = await CurrencyReader.GetCurrencies();

                model.Categories = await MarketplaceReader.GetMarketCategories();

                return(View("CreateMarketItem", model));
            }

            var mainImage = await model.MainImage.SaveMarketItemImageToDiskAsync(true);

            var altimage1 = await model.AltImage1.SaveMarketItemImageToDiskAsync(false);

            var altimage2 = await model.AltImage2.SaveMarketItemImageToDiskAsync(false);

            var altimage3 = await model.AltImage3.SaveMarketItemImageToDiskAsync(false);

            var altimage4 = await model.AltImage4.SaveMarketItemImageToDiskAsync(false);

            var marketItem = new CreateMarketModel
            {
                Type            = model.Type,
                CategoryId      = model.GetCategoryId(),
                Title           = model.Title,
                CurrencyId      = model.CurrencyId,
                MainImage       = mainImage,
                AlternateImages = new List <string> {
                    altimage1, altimage2, altimage3, altimage4
                },
                AskingPrice                  = model.Price,
                ReservePrice                 = model.ReservePrice,
                Description                  = model.Description,
                LocationRegion               = model.LocationRegion,
                AllowPickup                  = model.AllowPickup,
                PickupOnly                   = model.PickupOnly,
                LocationId                   = model.GetLocationId(),
                ShippingBuyerArrange         = model.ShippingBuyerArrange,
                ShippingNational             = model.ShippingNational,
                ShippingInternational        = model.ShippingInternational,
                ShippingNationalPrice        = model.ShippingNationalPrice,
                ShippingNationalDetails      = model.ShippingNationalDetails,
                ShippingInternationalPrice   = model.ShippingInternationalPrice,
                ShippingInternationalDetails = model.ShippingInternationalDetails,
                CloseDate = DateTime.UtcNow.AddDays(model.Type == MarketItemType.Auction ? Math.Max(3, model.AuctionDuration) : 14)
            };


            var result = await MarketplaceWriter.CreateMarketItem(User.Identity.GetUserId(), marketItem);

            if (!result.Success)
            {
                return(ViewMessage(new ViewMessageModel(ViewMessageType.Danger, Resources.Market.itemActionErrorMessageTitle, Resources.Market.createItemErrorMessage)));
            }

            return(RedirectToAction("MarketItem", new { marketItemId = result.Result }));
        }
Example #15
0
        public async Task <ActionResult> Create(TransferCurrencyModel model)
        {
            var currencyData = await CurrencyReader.GetCurrency(model.Symbol);

            var user = await UserManager.FindValidByIdAsync(User.Identity.GetUserId());

            if (currencyData == null || user == null)
            {
                ViewBag.Message = String.Format(Resources.UserWallet.transferCurrencyNotFoundError, model.Symbol);
                return(View("Error"));
            }

            // Verify User
            var receivingUser = await UserReader.GetUserByName(model.UserName);

            if (receivingUser == null)
            {
                ModelState.AddModelError("UserName", String.Format(Resources.UserWallet.transferUserNotFoundError, model.UserName));
                return(View(await CreateTransferModel(user, model)));
            }
            if (receivingUser.UserId.Equals(User.Identity.GetUserId(), StringComparison.OrdinalIgnoreCase))
            {
                ModelState.AddModelError("UserName", Resources.UserWallet.transferUserIgnoredError);
                return(View(await CreateTransferModel(user, model)));
            }

            // Verify Amount
            if (model.Amount < 0.00000001m)
            {
                ModelState.AddModelError("Amount", String.Format(Resources.UserWallet.transferMinAmountError, "0.00000001", currencyData.Symbol));
                return(View(await CreateTransferModel(user, model)));
            }

            // Verify Two Factor
            if (!await UserManager.VerifyUserTwoFactorCodeAsync(TwoFactorComponent.Transfer, user.Id, model.Code1, model.Code2))
            {
                ModelState.AddModelError("TwoFactorError", Resources.UserWallet.transferTwoFactorFailedError);
                return(View(await CreateTransferModel(user, model)));
            }

            // Create transfer
            var result = await TradeService.CreateTransfer(User.Identity.GetUserId(), new CreateTransferModel
            {
                Receiver     = receivingUser.UserId,
                Amount       = model.Amount,
                CurrencyId   = model.CurrencyId,
                TransferType = TransferType.User
            });

            if (result.IsError)
            {
                ModelState.AddModelError("Error", result.Error);
                return(View(await CreateTransferModel(user, model)));
            }

            return(RedirectToAction("Summary", new { transferId = result.TransferId, returnUrl = GetLocalReturnUrl(model.ReturnUrl) }));
        }
Example #16
0
        public async Task <ActionResult> Index(string returnUrl)
        {
            var currencyData = await CurrencyReader.GetCurrencies();

            return(View(new TransferViewModel
            {
                Currencies = currencyData,
                ReturnUrl = GetLocalReturnUrl(returnUrl)
            }));
        }
Example #17
0
        /// <summary>
        /// App entry point.
        /// </summary>
        static void Main(string[] args)
        {
            CurrencyReader      reader      = new CurrencyReader();
            CacheCurrencyReader cacheReader = new CacheCurrencyReader(reader);

            CultureInfo culture = new CultureInfo("en-US");

            Console.WriteLine("Enter date or dates (with comma) in ISO format (yyyy-MM-dd). " +
                              "\nFor example: \"2018-01-01\" or \"2018-01-01,2018-02-02\":" +
                              "Enter a blank line to exit.\n");

            // User input.
            string input;

            // Input dates.
            string[] dates;

            // Currency name.
            string currencyName = System.Threading.Thread.CurrentThread.CurrentCulture == CultureInfo.GetCultureInfo("ru-RU")
                                  ? "RUB"
                                  : "EUR";

            while (true)
            {
                input = Console.ReadLine().Trim();

                if (string.IsNullOrEmpty(input))
                {
                    break;
                }
                else
                {
                    dates = input.Split(',');
                }

                foreach (var date in dates)
                {
                    try
                    {
                        DateFormatChecker.Check(date);

                        Console.WriteLine($"{date}: {cacheReader.GetCurrencyByDate(DateTime.Parse(date)).ToString(culture)} {currencyName}");
                    }
                    catch (DateFormatException ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    catch (CurrencyNotFoundException ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }
        }
Example #18
0
        public async Task <ActionResult> UpdateCurrency(int id)
        {
            var model = await CurrencyReader.GetUpdateCurrency(id);

            if (model == null)
            {
                return(ViewMessageModal(new ViewMessageModel(ViewMessageType.Danger, "Error", $"Currency '{id}' not found")));
            }

            return(View("UpdateCurrencyModal", model));
        }
Example #19
0
        public async Task <ActionResult> GetCurrencies()
        {
            var currencies = await CurrencyReader.GetCurrencies();

            var model = new AdminCurrencyModel
            {
                Currencies = currencies.Select(x => x.Symbol).OrderBy(x => x).ToList()
            };

            return(PartialView("_Currencies", model));
        }
Example #20
0
        public async Task <ActionResult> EditMarketItem(int marketItemId, bool isRelisting = false)
        {
            var response = await MarketplaceReader.GetMarketItem(marketItemId);

            if (response == null)
            {
                return(RedirectToAction("Index"));
            }

            var currentUser = new Guid(User.Identity.GetUserId());

            if (response.UserId != currentUser)
            {
                return(RedirectToAction("MarketItem", new { marketItemId = marketItemId }));
            }

            var marketItem = new EditMarketItemModel
            {
                Title            = response.Title,
                Id               = response.Id,
                Type             = response.Type,
                CategoryId       = response.CategoryId,
                Price            = response.AskingPrice,
                Description      = response.Description,
                CurrentMainImage = response.MainImage,
                CurrentAltImage1 = response.AlternateImages.Take(1).FirstOrDefault(),
                CurrentAltImage2 = response.AlternateImages.Skip(1).Take(1).FirstOrDefault(),
                CurrentAltImage3 = response.AlternateImages.Skip(2).Take(1).FirstOrDefault(),
                CurrentAltImage4 = response.AlternateImages.Skip(3).Take(1).FirstOrDefault(),
                CurrencyId       = response.CurrencyId,
                //   Feature = response.MarketItem.Feature,
                CityId                       = response.GetCityId(),
                CountryId                    = response.GetCountryId(),
                ReservePrice                 = response.ReservePrice,
                LocationRegion               = response.LocationRegion,
                AllowPickup                  = response.AllowPickup,
                PickupOnly                   = response.PickupOnly,
                ShippingBuyerArrange         = response.ShippingBuyerArrange,
                ShippingNational             = response.ShippingNational,
                ShippingInternational        = response.ShippingInternational,
                ShippingNationalPrice        = response.ShippingNationalPrice,
                ShippingNationalDetails      = response.ShippingNationalDetails,
                ShippingInternationalPrice   = response.ShippingInternationalPrice,
                ShippingInternationalDetails = response.ShippingInternationalDetails,
                IsRelisting                  = isRelisting,
                HasBids                      = response.Bids != null && response.Bids.Any(),
                Currencies                   = await CurrencyReader.GetCurrencies(),
                Categories                   = await MarketplaceReader.GetMarketCategories()
            };

            marketItem.SetCategories(response);

            return(View(marketItem));
        }
Example #21
0
        async Task <List <Balance> > GetBalancesAsync(string accountNumber, AccessToken accessToken)
        {
            var balances = new List <Balance>();

            foreach (var b in (await BalanceApi.FindBalancesAsync(accountNumber, accessToken)).PerCurrencyBalances)
            {
                balances.Add(new Balance(Balance.Cash, b.Cash, await CurrencyReader.ReadByCodeAsync(b.Currency.ToString())));
            }

            return(balances);
        }
Example #22
0
        public async Task <ActionResult> PeerInfo(int id)
        {
            var model = await CurrencyReader.GetPeerInfo(id);

            if (model == null)
            {
                return(ViewMessageModal(new ViewMessageModel(ViewMessageType.Danger, Resources.CoinInfo.infoCurrencyNotFoundMessageTitle,
                                                             String.Format(Resources.CoinInfo.infoCurrencyNotFoundMessage, id))));
            }

            return(View("PeerInfoModal", model));
        }
        public async Task <List <LottoSlotItemModel> > GetLottoSlotItems()
        {
            var currencies = await CurrencyReader.GetCurrencies().ConfigureAwait(false);

            return(currencies.Select(x => new LottoSlotItemModel
            {
                Id = x.CurrencyId,
                Name = x.Symbol
            })
                   .OrderBy(x => x.Name)
                   .ToList());
        }
Example #24
0
        public async Task <ActionResult> TipCurrency()
        {
            var user = await UserManager.FindValidByIdAsync(User.Identity.GetUserId());

            if (user == null)
            {
                return(View("~/Views/Modal/Invalid.cshtml"));
            }

            var model = user.GetTwoFactorModel <TipbotModel>(TwoFactorComponent.Tip);

            model.Currencies = await CurrencyReader.GetCurrencies();

            return(View(model));
        }
        public async Task <ActionResult> Index(string returnUrl)
        {
            var currencyData = await CurrencyReader.GetCurrencies();

            if (currencyData == null)
            {
                ViewBag.Message = "An unknown error occurred, if problems persit please contact Cryptopia support.";
                return(View("Error"));
            }

            return(View(new WithdrawViewModel
            {
                Currencies = currencyData,
                ReturnUrl = GetLocalReturnUrl(returnUrl)
            }));
        }
Example #26
0
        public async Task <ActionResult> AdminUpdateVoteSettings()
        {
            var model = await VoteReader.GetVoteSettings();

            if (model == null)
            {
                return(ViewMessageModal(ViewMessageModel.Error("Not Found", "Vote settings not found.")));
            }

            return(View("AdminUpdateVoteSettingsModal", new UpdateVoteSettingsModel
            {
                Next = model.NextVote,
                Price = model.Price,
                IsFreeEnabled = model.IsFreeEnabled,
                IsPaidEnabled = model.IsPaidEnabled,
                CurrencyId = model.CurrencyId,
                Currencies = await CurrencyReader.GetCurrencies()
            }));
        }
        public async Task <List <TipSlotItemModel> > GetTipSlotItems()
        {
            var currencies = await CurrencyReader.GetCurrencies().ConfigureAwait(false);

            return(currencies.Select(x => new TipSlotItemModel
            {
                Id = x.CurrencyId,
                Name = x.Symbol,
                IsExpired = DateTime.UtcNow > x.TippingExpires,
                Expires = x.TippingExpires > DateTime.UtcNow
                                        ? x.TippingExpires
                                        : DateTime.UtcNow,
                NewExpiry = x.TippingExpires > DateTime.UtcNow
                                        ? x.TippingExpires.AddDays(30)
                                        : DateTime.UtcNow.AddDays(30)
            })
                   .OrderBy(x => x.Name)
                   .ToList());
        }
        private async Task <List <ShareholderFeeInfo> > GetTradeFeeInfo(DateTime lastPayout, DateTime nextPayout, decimal totalBTCExpense)
        {
            var cacheResult = await CacheService.GetOrSetHybridAsync(CacheKey.ShareholderTradeFeeInfo(), TimeSpan.FromHours(1), async() =>
            {
                var baseCurrencies = await CurrencyReader.GetBaseCurrencies().ConfigureAwait(false);
                using (var context = ExchangeDataContextFactory.CreateReadOnlyContext())
                {
                    var feeData = await context.TradeHistory
                                  .AsNoTracking()
                                  .Where(x => x.Timestamp > lastPayout && x.Timestamp <= nextPayout)
                                  .Select(x => new
                    {
                        BaseCurrency = x.TradePair.Currency2.Symbol,
                        Fee          = x.Fee
                    })
                                  .GroupBy(x => x.BaseCurrency)
                                  .Select(x => new
                    {
                        Symbol = x.Key,
                        Total  = x.Sum(k => k.Fee)
                    }).ToListNoLockAsync().ConfigureAwait(false);

                    var results = new List <ShareholderFeeInfo>();
                    foreach (var baseCurrency in baseCurrencies.OrderBy(x => x.CurrencyId))
                    {
                        var fees = feeData.FirstOrDefault(x => x.Symbol == baseCurrency.Symbol);
                        var info = new ShareholderFeeInfo
                        {
                            Name      = baseCurrency.Name,
                            Symbol    = baseCurrency.Symbol,
                            TotalFees = (fees?.Total ?? 0) * 2,
                            Expenses  = baseCurrency.CurrencyId == 1 ? totalBTCExpense : 0
                        };
                        info.SharePrice = Math.Max(info.TotalFees - info.Expenses, 0) / 20000.0m;
                        results.Add(info);
                    }
                    return(results);
                }
            }).ConfigureAwait(false);

            return(cacheResult);
        }
Example #29
0
        public async Task <ActionResult> AdminUpdateVoteSettings(UpdateVoteSettingsModel model)
        {
            if (!ModelState.IsValid)
            {
                model.Currencies = await CurrencyReader.GetCurrencies();

                return(View("AdminUpdateVoteSettingsModal", model));
            }

            var result = await VoteWriter.AdminUpdateVoteSettings(User.Id(), model);

            if (!ModelState.IsWriterResultValid(result))
            {
                model.Currencies = await CurrencyReader.GetCurrencies();

                return(View("AdminUpdateVoteSettingsModal", model));
            }

            return(CloseModal());
        }
Example #30
0
        public async Task <ActionResult> CreateTradePair(CreateTradePairModel model)
        {
            if (!ModelState.IsValid)
            {
                model.Currencies = await CurrencyReader.GetCurrencies();

                return(View("CreateTradePairModal", model));
            }

            var result = await TradePairWriter.AdminCreateTradePair(model);

            if (!ModelState.IsWriterResultValid(result))
            {
                model.Currencies = await CurrencyReader.GetCurrencies();

                return(View("CreateTradePairModal", model));
            }

            return(CloseModal(result));
        }