Exemplo n.º 1
0
        public TransactionResult CreateOffer(string UserId, Guid itemId, string categorySlug, string itemSlug, string comment, decimal price)
        {
            try
            {
                var tokenCount = _userEngine.CurrentUserToken(UserId, disableCache: true);
                if (tokenCount <= 0)
                {
                    return(new TransactionResult(message: "Yeterli jetonunuz bulunmamaktadır. Teklif verebilmek için jeton almanız gerekmektedir.", type: TransactionType.Error));
                }

                var myOffer = _dbContext.Offer.FirstOrDefault(i => i.ItemId == itemId && i.UserId == UserId);
                if (myOffer != null)
                {
                    return(new TransactionResult(message: "Bu hizmet için verilmiş teklifiniz var. Birden fazla teklif veremezsiniz!", type: TransactionType.Error));
                }

                var item = _dbContext.Item.FirstOrDefault(i => i.Id == itemId);
                if (item != null && (item.StatusID == (int)StatusTypes.Declined || item.StatusID == (int)StatusTypes.Closed))
                {
                    return(new TransactionResult(message: "Bu hizmet sonlandığı için teklif veremezsiniz!", type: TransactionType.Error));
                }

                var offer = new Offer();
                offer.Id         = Guid.NewGuid();
                offer.UserId     = UserId;
                offer.ItemId     = itemId;
                offer.OfferPrice = price;
                offer.OfferDate  = DateTime.Now;
                offer.Comment    = comment;

                _dbContext.Offer.Add(offer);

                var spent = new SpentHistory()
                {
                    Id          = Guid.NewGuid(),
                    TokenSpent  = 1,
                    UserId      = UserId,
                    CreatedDate = DateTime.Now,
                    Title       = "Projeye teklif verdiniz."
                };
                _dbContext.SpentHistory.Add(spent);

                _dbContext.SaveChanges();

                _notificationService.AddNotification(UserId, NotificationTypes.CreateOffer, itemId: itemId.ToString());
                _notificationService.AddNotification(item.UserId, NotificationTypes.ReceivedOffer, itemId: itemId.ToString());

                return(new TransactionResult()
                {
                    Type = TransactionType.Success
                });
            }
            catch (Exception ex)
            {
                return(new TransactionResult(message: "Beklenmedik bir hata oluştu. Lütfen tekrar deneyiniz.", type: TransactionType.Error));
            }
        }
Exemplo n.º 2
0
        async public Task <IActionResult> Tokens()
        {
            SetPageContent("tokens");

            var user = await _userEngine.CurrentUser(_userManager.GetUserId(User));

            var model = new TokensViewModel()
            {
                Items      = _projectEngine.GetUserTokens(user.Id),
                TokenCount = _userEngine.CurrentUserToken(_userManager.GetUserId(User))
            };

            return(View(model));
        }