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