public ActionResult DeactivateBundle(int bundleID) { bool result = true; User editUser = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name).First(); Bundle bundleToDeactivate = db.Bundles.Where(b => b.BundleID == bundleID).FirstOrDefault(); if (bundleToDeactivate == null) { result = false; } else { bundleToDeactivate.IsActive = false; ConcurencyHandling.SaveChangesWithConcurencyHandling(db); foreach (var offer in bundleToDeactivate.Offers) { offer.Bundle = null; } ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } return(Json(result)); }
public ActionResult Offers(bool?userActivated, bool?success, int?offerID) { if (userActivated != null && !(bool)userActivated) { ViewBag.UserNotActivated = "Musisz aktywować swoje konto by móc wystawiać oferty!"; } if (success != null && (bool)success) { ViewBag.Success = true; } if (success != null && !(bool)success) { ViewBag.Success = false; if (offerID != null) { Offer offerToRemove = db.Offers.Where(o => o.OfferID == offerID).FirstOrDefault(); if (offerToRemove != null) { db.Offers.Remove(offerToRemove); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } } } User editUser = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name).First(); List <Offer> offers = editUser.Offers.ToList(); offers = offers.OrderBy(o => o.OfferID).ToList(); return(View(offers)); }
public ActionResult PasswordResetRequest(FormCollection collection) { if (collection != null && !User.Identity.IsAuthenticated) { if (collection["email-input"] != null && collection["email-input"].Contains('@')) { string Email = collection["email-input"]; string PasswordResetCode = ShopApp.Utility.Utilities.RandomString(8); var user = db.Users.Where(i => i.Email == Email).FirstOrDefault(); if (user != null) { Task.Run(() => EmailManager.SendEmailAsync(user.FirstName, user.LastName, Email, PasswordResetCode)); PasswordReset ResetCode = new PasswordReset(Email, PasswordResetCode); db.PasswordResetCodes.Add(ResetCode); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } Session["ResetPasswordEmail"] = Email; return(RedirectToAction("PasswordReset", "User")); } else { ViewBag.ErrorMessage = "Prosze podać email"; } } else { ViewBag.ErrorMessage = "Nieprawidłowe dane"; } return(View()); }
private bool DecrementProductFromOffer(Offer offer, double quantity) { double restInSctock = offer.InStockNow - quantity; if (restInSctock > 1 && quantity <= offer.InStockNow) { offer.InStockNow -= quantity; } else if (restInSctock == 0) { offer.InStockNow = 0; offer.IsActive = false; if (offer.Bundle != null) { offer.Bundle.IsActive = false; foreach (Offer offerInBundle in offer.Bundle.Offers) { offerInBundle.IsActive = false; } } } else { return(false); } ConcurencyHandling.SaveChangesWithConcurencyHandling(db); return(true); }
public async Task <IHttpActionResult> AddOfferToBucketAsync() { string json = await Request.Content.ReadAsStringAsync(); dynamic data = JsonConvert.DeserializeObject <Dictionary <string, string> >(json); string login = data["login"]; int offerId = Convert.ToInt32(data["offerId"]); string quantity = data["quantity"]; User user = db.Users.Where(i => i.Login == login).FirstOrDefault(); BucketItem NewBucketItem = new BucketItem(); var Offer = db.Offers.Where(i => i.OfferID == offerId && i.IsActive).FirstOrDefault(); if (Offer != null)//We chceck if user called for existing and active offer { bool?AlreadyInBucket = user.Bucket?.BucketItems?.Where(i => i.Offer != null && i.Offer.OfferID == offerId).Any(); if (AlreadyInBucket == false) { bool?IsOwner = user.Offers?.Where(i => i.OfferID == offerId).Any(); if (IsOwner == false) { if (int.TryParse(quantity, out int QuantityAsInt)) { if (Offer.InStockNow < QuantityAsInt || QuantityAsInt < 1) { return(BadRequest("Przekroczono dostępną ilość danego produktu")); } else { NewBucketItem.Offer = Offer; NewBucketItem.Quantity = QuantityAsInt; NewBucketItem.TotalPrice = QuantityAsInt * Offer.Price; db.BucketItems.Add(NewBucketItem); user.Bucket.BucketItems.Add(NewBucketItem); NewBucketItem.Bucket = user.Bucket; Offer.BucketItems.Add(NewBucketItem); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); return(Ok("true")); } } } else { return(BadRequest("Już posiadasz tę ofertę")); } } return(BadRequest("Oferta znajduje sie juz w koszyku")); } return(BadRequest("Nie udalo sie dodac oferty")); }
public ActionResult ManageTransaction(int transactionID, bool isAccepted) { Transaction managedTransaction = db.Transactions.Where(t => t.TransactionID == transactionID).FirstOrDefault(); User user = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name).FirstOrDefault(); StringBuilder returnInfo = new StringBuilder(); if (managedTransaction != null && user != null && user.SoldTransactions.Contains(managedTransaction) && managedTransaction.IsChosen == false) { managedTransaction.IsChosen = true; managedTransaction.IsAccepted = isAccepted; ConcurencyHandling.SaveChangesWithConcurencyHandling(db); if (isAccepted) { foreach (var bucketItem in managedTransaction.BucketItems) { if (bucketItem.Offer != null) { if (!DecrementProductFromOffer(bucketItem.Offer, bucketItem.Quantity)) { returnInfo.AppendLine("Brak produktu: " + bucketItem.Offer.Title); } } else if (bucketItem.Bundle != null) { foreach (var offer in bucketItem.Bundle.Offers) { if (!DecrementProductFromOffer(offer, 1)) { returnInfo.AppendLine("Brak produktu: " + offer.Title); } } } } } return(Json(returnInfo.ToString())); } return(Json("ERROR")); }
public ActionResult PasswordReset(FormCollection collection) { if (Session["ResetPasswordEmail"] != null && !User.Identity.IsAuthenticated) { string email = Session["ResetPasswordEmail"].ToString(); if (collection["codeInput"] != null && collection["EncryptedPassword"] != null && collection["passwordRegisterInput2"] != null) { try { string Code = collection["codeInput"]; string NewPassword = collection["EncryptedPassword"]; string NewPasswordRepeated = collection["passwordRegisterInput2"]; var PasswordCode = db.PasswordResetCodes.Where(i => i.EmailAddress == email && i.CodeExpirationTime > DateTime.UtcNow && !i.Used).OrderByDescending(i => i.CodeCreationTime).FirstOrDefault(); var user = db.Users.Where(i => i.Email == email).FirstOrDefault(); if (PasswordCode != null && user != null) { if (Code.Equals(PasswordCode.PasswordResetCode) && NewPassword.Equals(NewPasswordRepeated) && PasswordCode.TriesCount < 3) { user.EncryptedPassword = Cryptographing.Encrypt(NewPassword); PasswordCode.Used = true; ConcurencyHandling.SaveChangesWithConcurencyHandling(db); Session.Clear(); return(RedirectToAction("Login", "User")); } else { PasswordCode.TriesCount++; ViewBag.ErrorMessage = "Niepoprawny kod"; ConcurencyHandling.SaveChangesWithConcurencyHandling(db); return(View()); } } } catch (Exception ex) { Debug.WriteLine(ex.StackTrace); return(new HttpStatusCodeResult(500)); } } } return(new HttpStatusCodeResult(404)); }
public async Task <IHttpActionResult> RemoveFromBucket() { string json = await Request.Content.ReadAsStringAsync(); dynamic data = JsonConvert.DeserializeObject <Dictionary <string, string> >(json); string login = data["login"]; int id = Convert.ToInt32(data["offerId"]); var user = db.Users.Where(i => i.Login == login && i.IsActivated).FirstOrDefault(); if (user != null && id > 0) { var Offer = db.Offers.Where(i => i.OfferID == id).FirstOrDefault(); if (Offer != null) { BucketItem BucketItemToRemove = user.Bucket?.BucketItems?.Where(i => i.Offer != null && i.Offer.OfferID == id).FirstOrDefault(); if (BucketItemToRemove != null) //We chceck if user called for existing and active offer { user.Bucket.BucketItems.Remove(BucketItemToRemove); Offer.BucketItems.Remove(BucketItemToRemove); db.BucketItems.Remove(BucketItemToRemove); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } else { return(Ok("Nie posiadasz tej oferty w swoim koszyku")); } } else { return(Ok("Wybrana oferta nie istnieje")); } } else { return(BadRequest("Wprowadzone dane są niepoprawne")); } return(BadRequest()); }
public ActionResult DeactivateOffer(int offerID) { bool result = true; User editUser = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name).First(); Offer offerToDeactivate = db.Offers.Where(o => o.OfferID == offerID).FirstOrDefault(); if (offerToDeactivate == null) { result = false; } else { offerToDeactivate.IsActive = false; ConcurencyHandling.SaveChangesWithConcurencyHandling(db); if (offerToDeactivate.Bundle != null) { offerToDeactivate.Bundle.IsActive = false; ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } } return(Json(result)); }
public async Task <IHttpActionResult> BuyBucketItemsAsync() { string json = await Request.Content.ReadAsStringAsync(); dynamic data = JsonConvert.DeserializeObject <Dictionary <string, string> >(json); string login = data["login"]; int addressId = Convert.ToInt32(data["addressId"]); var user = db.Users.Where(i => i.Login == login && i.IsActivated).FirstOrDefault(); //Odpowiednie errorr message dlaczego if (user != null) { var order = user.Bucket?.BucketItems?.ToList(); var Address = user.ShippingAdresses?.Where(i => i.AdressID == addressId).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 (!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); } } var BucketItemsInOrderTab = user.Bucket.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); } } return(BadRequest()); }
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")); }
public async Task <ActionResult> RemoveFromBucket(string type, int?id) { string error = string.Empty; User User = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name).FirstOrDefault(); if ((type == "Offer" || type == "Bundle") && User != null && id != null && id > 0) { if (type == "Offer") { var Offer = db.Offers.Where(i => i.OfferID == id).FirstOrDefault(); if (Offer != null) { BucketItem BucketItemToRemove = User.Bucket?.BucketItems?.Where(i => i.Offer != null && i.Offer.OfferID == id).FirstOrDefault(); if (BucketItemToRemove != null)//We chceck if user called for existing and active offer { User.Bucket.BucketItems.Remove(BucketItemToRemove); Offer.BucketItems.Remove(BucketItemToRemove); db.BucketItems.Remove(BucketItemToRemove); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } else { error = "Nie posiadasz tej oferty w swoim koszyku"; } } else { error = "Wybrana oferta nie istnieje"; } } else { var Bundle = db.Bundles.Where(i => i.BundleID == id && i.IsActive).FirstOrDefault(); if (Bundle != null) { BucketItem BucketItemToRemove = User?.Bucket?.BucketItems?.Where(i => i.Bundle != null && i.Bundle.BundleID == id).FirstOrDefault(); if (BucketItemToRemove != null) { User.Bucket.BucketItems.Remove(BucketItemToRemove); Bundle.BucketItems.Remove(BucketItemToRemove); db.BucketItems.Remove(BucketItemToRemove); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } else { error = "Nie posiadasz takiego zestawu w koszyku"; } } else { error = "Wybrany zestaw nie istnieje"; } } } else { error = "Wprowadzone dane są niepoprawne"; } return(Json(error, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> AddToBucket(string type, int?id, string quantity) { string error = string.Empty; User user = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name).FirstOrDefault(); if ((type == "Offer" || type == "Bundle") && user != null && id != null && quantity != null) { BucketItem NewBucketItem = new BucketItem(); if (type == "Offer") { var Offer = db.Offers.Where(i => i.OfferID == id && i.IsActive).FirstOrDefault(); if (Offer != null)//We chceck if user called for existing and active offer { bool?AlreadyInBucket = user.Bucket?.BucketItems?.Where(i => i.Offer != null && i.Offer.OfferID == id).Any(); if (AlreadyInBucket == false) { bool?IsOwner = user.Offers?.Where(i => i.OfferID == id).Any(); if (IsOwner == false) { if (int.TryParse(quantity, out int QuantityAsInt)) { if (Offer.InStockNow < QuantityAsInt || QuantityAsInt < 1) { error = "Przekroczono dostępną ilość danego produktu"; } else { NewBucketItem.Offer = Offer; NewBucketItem.Quantity = QuantityAsInt; NewBucketItem.TotalPrice = QuantityAsInt * Offer.Price; db.BucketItems.Add(NewBucketItem); user.Bucket.BucketItems.Add(NewBucketItem); NewBucketItem.Bucket = user.Bucket; Offer.BucketItems.Add(NewBucketItem); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } } else { error = "Ilość musi być liczbą"; } } else { error = "Nie możesz dodać do koszyka swojej oferty"; } } else { error = "Już posiadasz tę ofertę"; } } else { error = "Nie znaleziono takiej oferty"; } } else { var Bundle = db.Bundles.Where(i => i.BundleID == id && i.IsActive).FirstOrDefault(); if (Bundle != null)//We chceck if user called for existing and active Bundle { bool?AlreadyInBucket = user.Bucket?.BucketItems?.Where(i => i.Bundle != null && i.Bundle.BundleID == id).Any(); if (AlreadyInBucket == false) { bool?IsOwner = user.Bundles?.Where(i => i.BundleID == id).Any(); if (IsOwner == false) { NewBucketItem.Quantity = 1; NewBucketItem.TotalPrice = Bundle.BundlePrice; NewBucketItem.Bundle = Bundle; db.BucketItems.Add(NewBucketItem); user.Bucket.BucketItems.Add(NewBucketItem); NewBucketItem.Bucket = user.Bucket; Bundle.BucketItems.Add(NewBucketItem); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } else { error = "Nie możesz dodać do koszyka swojego zestawu"; } } else { error = "Już posiadasz ten zestaw"; } } else { error = "Nie znaleziono takiego zesatwu"; } } } else { error = "Wprowadzone dane są niepoprawne"; } return(Json(error, JsonRequestBehavior.AllowGet)); }
public ActionResult Bucket(FormCollection collection) { var user = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name).FirstOrDefault(); if (user != null) { if (user.ShippingAdresses.Count() == 0 || user?.Bucket?.BucketItems == null || !user.IsActivated) { return(RedirectToAction("Bucket")); } if (collection != null) { var UsersBucketItems = user?.Bucket?.BucketItems?.ToList(); if (UsersBucketItems != null) { var InBucketOffers = UsersBucketItems.Where(i => i.Offer != null && i.Offer.IsActive).ToList(); var InBucketBundles = UsersBucketItems.Where(i => i.Bundle != null && i.Bundle.IsActive).ToList(); var SellersLogins = collection.AllKeys.Where(i => i.StartsWith("SelectedSeller_")).Select(i => i.Substring(i.LastIndexOf("_") + 1)).ToList(); List <BucketItem> BucketItemsListToBuy = new List <BucketItem>(); if (SellersLogins != null) { foreach (var item in collection.AllKeys) { if (item.StartsWith("Offer_quantity_") && int.TryParse(item.Substring(item.LastIndexOf("_") + 1), out int BucketItemOfferID)) { var SelectedBucketItemOffer = InBucketOffers?.Where(i => i.BucketItemID == BucketItemOfferID).FirstOrDefault(); if (SelectedBucketItemOffer != null && SellersLogins.Contains(SelectedBucketItemOffer.Offer.User.Login) && int.TryParse(collection["Offer_quantity_" + BucketItemOfferID], out int BucketItemOfferQuantity)) { if (SelectedBucketItemOffer.Offer.InStockNow >= BucketItemOfferQuantity) { SelectedBucketItemOffer.Quantity = BucketItemOfferQuantity; BucketItemsListToBuy.Add(SelectedBucketItemOffer); } //else //{ // ViewBag.ExceedingMaxAmount = "Nie wszystkie produkty mogą zostać zakupione w podanych ilościach"; // return View("CriticalErrorView"); //} // ----- //Check saved time } } else if (item.StartsWith("Bundle_quantity_") && int.TryParse(item.Substring(item.LastIndexOf("_") + 1), out int BucketItemBundleID)) { var SelecetedBucketItemBundle = InBucketBundles?.Where(i => i.BucketItemID == BucketItemBundleID).FirstOrDefault(); if (SelecetedBucketItemBundle != null && SellersLogins != null && SellersLogins.Contains(SelecetedBucketItemBundle.Bundle.User.Login)) { BucketItemsListToBuy.Add(SelecetedBucketItemBundle); } } } } //If collection offers bundles and sellers all were valid => View if not => Redirect if (BucketItemsListToBuy.Count() > 0) { try { ////Not sure what happens if we delete the bucketitems in between operations foreach (var item in user.Order.BucketItems) { if (item != null && item.Order.Contains(user.Order)) { item.Order.Remove(user.Order); } } //user.Order.BucketItems.Clear(); //ConcurencyHandling.SaveChangesWithConcurencyHandling(db); user.Order.BucketItems = BucketItemsListToBuy; foreach (var item in user.Order.BucketItems) { item.Order.Add(user.Order); } ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } catch (Exception e) { Debug.WriteLine(e.StackTrace); return(new HttpStatusCodeResult(500)); } TempData["RedirectedFrom"] = "Bucket"; return(RedirectToAction("Order")); } return(RedirectToAction("Bucket")); } } } return(new HttpStatusCodeResult(404)); }
public async Task <ActionResult> UnFav(string type, int?id) { string error = string.Empty; User User = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name).FirstOrDefault(); if ((type == "Offer" || type == "Bundle") && User != null && id != null && id > 0) { if (type == "Offer") { var Offer = db.Offers.Where(i => i.OfferID == id).FirstOrDefault(); //Offer might not necessarily be active if (Offer != null) { Favourite Favourite = User.FavouriteOffer?.Where(i => i.Offer != null && i.Offer.OfferID == id).FirstOrDefault(); if (Favourite != null) { //Not checking if hes an owner because he wouldn't been able to add to fav in the first place. User.FavouriteOffer.Remove(Favourite); Offer.FavouriteOffer.Remove(Favourite); db.Favourites.Remove(Favourite); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } else { error = "Nie posiadasz takiej oferty w ulubionych"; } } else { error = "Podana oferta nie istnieje"; } } else { var Bundle = db.Bundles?.Where(i => i.BundleID == id).FirstOrDefault(); //Bundle might not necessarily be active if (Bundle != null) { Favourite Favourite = User.FavouriteOffer.Where(i => i.Bundle != null && i.Bundle.BundleID == id).FirstOrDefault(); if (Favourite != null) { User.FavouriteOffer.Remove(Favourite); Bundle.Favourites.Remove(Favourite); db.Favourites.Remove(Favourite); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } else { error = "Nie posiadasz takiego zestawu w ulubionych"; } } else { error = "Podany zestaw nie istnieje"; } } } else { error = "Wprowadzone dane są nieprawidłowe"; } return(Json(error, JsonRequestBehavior.AllowGet)); }
public async Task <ActionResult> Fav(string type, int?id) { string error = string.Empty; User User = db.Users.Where(i => i.Login == HttpContext.User.Identity.Name).FirstOrDefault(); if ((type == "Offer" || type == "Bundle") && User != null && id != null) { Favourite Favourite = new Favourite(); if (type == "Offer") { var Offer = db.Offers.Where(i => i.OfferID == id && i.IsActive).FirstOrDefault(); if (Offer != null) { bool?AlreadyInFav = User.FavouriteOffer?.Where(i => i.Offer != null && i.Offer.OfferID == id).Any(); if (AlreadyInFav == false) { bool?IsOwner = User.Offers?.Where(i => i.OfferID == id).Any(); if (IsOwner == false) { Favourite.Offer = Offer; Favourite.User = User; db.Favourites.Add(Favourite); Favourite.Offer.FavouriteOffer.Add(Favourite); Favourite.User.FavouriteOffer.Add(Favourite); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } else { error = "Ta oferta należy do Ciebie"; } } else { error = "Już posiadasz tę ofertę w ulubionych"; } } else { error = "Podana oferta nie istnieje lub jest nieaktywna"; } } else { var Bundle = db.Bundles.Where(i => i.BundleID == id && i.IsActive).FirstOrDefault(); if (Bundle != null) { bool?AlreadyInFav = User.FavouriteOffer?.Where(i => i.Bundle != null && i.Bundle.BundleID == id && i.Bundle.IsActive).Any(); if (AlreadyInFav == false) { bool?IsOwner = User.Bundles?.Where(i => i.BundleID == id).Any(); if (IsOwner == false) { Favourite.Bundle = Bundle; Favourite.User = User; db.Favourites.Add(Favourite); Favourite.Bundle.Favourites.Add(Favourite); Favourite.User.FavouriteOffer.Add(Favourite); ConcurencyHandling.SaveChangesWithConcurencyHandling(db); } else { error = "Ten zestaw należy do Ciebie"; } } else { error = "Już posiadasz ten zestaw w ulubionych"; } } else { error = "Podany zestaw nie istnieje lub jest nieaktywny"; } } } else { error = "Wprowadzone dane są nieprawidłowe"; } return(Json(error, JsonRequestBehavior.AllowGet)); }