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)); } }
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)); }