コード例 #1
0
        public async Task <IActionResult> CashOutBet([FromBody] CashOutViewModel model)
        {
            string userId = User.FindFirst("id").Value;
            User   user   = await UserManager.FindByIdAsync(userId);

            if (user == null)
            {
                return(Unauthorized());
            }

            Bet bet = await DataContext.Store
                      .GetOneAsync <Bet>(b => b.SlipNumber == model.SlipNumber && b.UserId == user.Id);

            if (bet == null)
            {
                return(NotFound("Could not locate that slip number for this account."));
            }

            bet.CashOutRequested = true;
            bet.CashedOutOnUtc   = DateTime.UtcNow;

            if (!await DataContext.Store.UpdateOneAsync(bet))
            {
                return(BadRequest("An unexpected error occured while updating the bet."));
            }

            await EmailService.SendEmailAsync(user.Email, $"Bet {bet.SlipNumber} cashout request is being reviewed", $"Hello {user.FirstName}, your request for cashout on ({bet.SlipNumber}) has been successfully registered. Our team will study your request and get back to you in 48 hours.");

            await SmsService.SendMessage(user.FormattedPhoneNumber, $"Hello {user.FirstName}, your request for cashout on ({bet.SlipNumber}) has been successfully registered. Our team will study your request and get back to you in 48 hours.");

            return(Ok());
        }
コード例 #2
0
        public ActionResult Order()
        {
            if (TempData["RedirectedFrom"] != null && TempData["RedirectedFrom"] == "Bucket")
            {
                var user = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name).FirstOrDefault();

                if (user != null && user.Order.BucketItems != null && user.ShippingAdresses.Count() != 0)
                {
                    CashOutViewModel cashOutViewModel = new CashOutViewModel
                    {
                        GroupedBucketItems = user.Order.BucketItems.GroupBy(i => i.Offer != null ? i.Offer.User : i.Bundle.User).ToList(),
                        ShippingAdresses   = user.ShippingAdresses
                    };
                    return(View(cashOutViewModel));
                }
                else
                {
                    //Returning 404 becuase managing the code to result in here has to be client-side code changes
                    return(new HttpStatusCodeResult(404));
                }
            }
            else
            {
                return(new HttpStatusCodeResult(404));
            }
        }
コード例 #3
0
        public async Task <ActionResult> Order(CashOutViewModel cashOutViewModel, FormCollection collection)
        {
            if (collection["address-input"] != null && int.TryParse(collection["address-input"], out int result))
            {
                var user = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name && i.IsActivated).FirstOrDefault();
                //Odpowiednie errorr message dlaczego
                if (user != null)
                {
                    var order   = user.Order?.BucketItems?.ToList();
                    var Address = user.ShippingAdresses?.Where(i => i.AdressID == result).FirstOrDefault();
                    List <BucketItem> ItemsThatCouldntBeenSold = new List <BucketItem>();
                    if (order != null && Address != null)
                    {
                        var grouped = order.GroupBy(i => i.Offer != null ? i.Offer.User : i.Bundle.User);
                        foreach (var seller in grouped)
                        {
                            var message = "Jestem zainteresowany zakupem wystawionego produktu proszę o odpowiedź.";
                            if (collection[$"message-input-{seller.Key.UserID}"] != null && collection[$"message-input-{seller.Key.UserID}"].Length != 0)
                            {
                                message = collection[$"message-input-{seller.Key.UserID}"];
                            }
                            if (!EmailManager.SendEmail(EmailManager.EmailType.TransactionRequest, seller.Key.FirstName, seller.Key.LastName, seller.Key.Email, user.Login, user.FirstName, user.LastName, seller.ToList(), message, Address))
                            {
                                //check that
                                seller.ToList().ForEach(i => ItemsThatCouldntBeenSold.Add(i));
                            }
                            else
                            {
                                Transaction transaction = new Transaction()
                                {
                                    Buyer       = user,
                                    Seller      = seller.Key,
                                    BucketItems = seller.ToList(), // NIE PRZYPISUJE ALE NIE WYWALA BŁĘDU??
                                                                   //BucketItems = (ICollection<BucketItem>)seller, // DOBRZE PRZYPISUJE, ALE WYWALA BŁĄD ŻĄDANIA
                                    CreationDate = DateTime.UtcNow,
                                    IsAccepted   = false,
                                    IsChosen     = false
                                };

                                db.Transactions.Add(transaction);
                                db.SaveChanges();

                                user.BoughtTransactions.Add(transaction);
                                db.SaveChanges();

                                seller.Key.SoldTransactions.Add(transaction);
                                db.SaveChanges();
                                //ConcurencyHandling.SaveChangesWithConcurencyHandling(db);

                                //foreach (var item in seller)
                                //{
                                //    item.Transaction.Add(transaction);
                                //    ConcurencyHandling.SaveChangesWithConcurencyHandling(db);
                                //}

                                //ConcurencyHandling.SaveChangesWithConcurencyHandling(db);
                                //WyswietlanieTransakcji(transaction);

                                //foreach (var offer in seller.ToList())
                                //{
                                //    offer.Transaction.Add(transaction);
                                //}
                                //ConcurencyHandling.SaveChangesWithConcurencyHandling(db);
                                //foreach (var offer in seller.ToList())
                                //{
                                //    offer.Transaction.Add(transaction);
                                //}
                                //ConcurencyHandling.SaveChangesWithConcurencyHandling(db);
                            }
                        }
                        if (ItemsThatCouldntBeenSold != null && ItemsThatCouldntBeenSold.Count() != 0)
                        {
                            TempData["ErrorMessage"] = "TransactionRequestError";
                        }
                        var BucketItemsInOrderTab = user.Order.BucketItems.ToArray();
                        for (int x = 0; x < BucketItemsInOrderTab.Count(); x++)
                        {
                            var item = BucketItemsInOrderTab.ElementAt(x);
                            if (ItemsThatCouldntBeenSold != null && ItemsThatCouldntBeenSold.Count() != 0 && ItemsThatCouldntBeenSold.Contains(item))
                            {
                                continue;
                            }
                            else
                            {
                                try
                                {
                                    user.Bucket.BucketItems.Remove(item);
                                    db.SaveChanges();

                                    //Offer itemOffer = item.Offer;
                                    //itemOffer.BucketItems.Remove(item);
                                    //db.SaveChanges();

                                    //db.Entry(item).State = System.Data.Entity.EntityState.Deleted;
                                    //db.SaveChanges();
                                }
                                catch (Exception ex)
                                {
                                    Debug.WriteLine("--------------------- ERROR: " + ex.InnerException.Message);
                                }

                                //db.BucketItems.Remove(item);
                                //await RemoveFromBucket(item.Offer != null ? "Offer" : "Bundle", item.Offer != null ? item.Offer.OfferID : item.Bundle.BundleID);
                            }
                        }

                        user.Order.BucketItems.Clear();
                        ConcurencyHandling.SaveChangesWithConcurencyHandling(db);
                    }
                }
                //usunac ischosen z bazy
                //tworzymy historie transakcji
                //do bazy dodac w transakcji isconfirmed ischosen
                //Dodawanie i usuwanie z bucketa musza miec walidacje na transakcje
            }
            return(RedirectToAction("Bucket"));
        }