Exemple #1
0
        public async Task <ActionResult> ExchangeListing(ExchangeListingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("ExchangeListingModal", model));
            }

            var result = await PaytopiaWriter.UpdateExchangeListing(User.Identity.GetUserId(), model);

            if (!ModelState.IsWriterResultValid(result))
            {
                return(View("ExchangeListingModal", model));
            }

            return(CloseModal(result));
        }
Exemple #2
0
        public async Task <ActionResult> TwoFactor(TwoFactorModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("TwoFactorModal", model));
            }

            ModelState.Clear();
            var result = await PaytopiaWriter.UpdateTwoFactor(User.Identity.GetUserId(), model);

            if (!ModelState.IsWriterResultValid(result))
            {
                return(View("TwoFactorModal", model));
            }

            return(CloseModal(result));
        }
Exemple #3
0
        public async Task <ActionResult> Shares(SharesModel model)
        {
            if (!ClaimsUser.IsShareholder && !ModelState.IsValid)
            {
                return(View("SharesModal", model));
            }

            ModelState.Clear();
            var result = await PaytopiaWriter.UpdateShares(User.Identity.GetUserId(), model);

            if (!ModelState.IsWriterResultValid(result))
            {
                return(View("SharesModal", model));
            }

            return(CloseModal(result));
        }
Exemple #4
0
        public async Task <ActionResult> FeaturedPoolSlot(FeaturedSlotModel model)
        {
            if (!ModelState.IsValid)
            {
                model.Items = await PaytopiaReader.GetFeaturedPoolSlotItems();

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

            var result = await PaytopiaWriter.UpdateFeaturedPoolSlot(User.Identity.GetUserId(), model);

            if (!ModelState.IsWriterResultValid(result))
            {
                model.Items = await PaytopiaReader.GetFeaturedPoolSlotItems();

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

            return(CloseModal(result));
        }
Exemple #5
0
        public async Task <ActionResult> PoolListing(PoolListingModel model)
        {
            if (!model.IsListed && !ModelState.IsValid)
            {
                model.Items = await PaytopiaReader.GetPoolListingItems();

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

            ModelState.Clear();
            var result = await PaytopiaWriter.UpdatePoolListing(User.Identity.GetUserId(), model);

            if (!ModelState.IsWriterResultValid(result))
            {
                model.Items = await PaytopiaReader.GetPoolListingItems();

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

            return(CloseModal(result));
        }
        public async Task <List <FeaturedSlotItemModel> > GetFeaturedPoolSlotItems()
        {
            using (var context = DataContextFactory.CreateReadOnlyContext())
            {
                var slotDetail = await context.PaytopiaPayments
                                 .AsNoTracking()
                                 .Where(x => x.PaytopiaItem.Type == PaytopiaItemType.FeaturedPool && x.Ends > DateTime.UtcNow)
                                 .GroupBy(x => x.ReferenceId)
                                 .ToListNoLockAsync().ConfigureAwait(false);

                var pools = await PoolReader.GetPools().ConfigureAwait(false);

                var results = new List <FeaturedSlotItemModel>();
                foreach (var pool in pools.DistinctBy(x => x.Symbol))
                {
                    var isActive           = false;
                    var slotSummary        = string.Empty;
                    var existingSlotDetail = slotDetail.FirstOrDefault(x => x.Key == pool.Id);
                    if (existingSlotDetail != null && existingSlotDetail.Any())
                    {
                        isActive    = existingSlotDetail.Any(x => x.Begins < DateTime.UtcNow.Date && DateTime.UtcNow.Date < x.Ends);
                        slotSummary = string.Join(",", existingSlotDetail.Select(x => $"Week: {x.Begins.WeekOfYear()} ({x.Begins.ToString("dd/MM/yyyy")} - {x.Ends.ToString("dd/MM/yyyy")})"));
                    }

                    var nextFreeSlot = PaytopiaWriter.GetNextFreeSlot(pool.Id, slotDetail.FirstOrDefault(x => x.Key == pool.Id));
                    results.Add(new FeaturedSlotItemModel
                    {
                        Id            = pool.Id,
                        Name          = pool.Symbol,
                        IsFeatured    = isActive,
                        NextSlotWeek  = nextFreeSlot.Begin.WeekOfYear(),
                        NextSlotBegin = nextFreeSlot.Begin,
                        NextSlotEnd   = nextFreeSlot.End,
                        SlotSummary   = slotSummary
                    });
                }
                return(results);
            }
        }