Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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());
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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"));
        }
Exemple #6
0
        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"));
        }
Exemple #7
0
        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));
        }
Exemple #8
0
        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());
        }
Exemple #9
0
        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));
        }
Exemple #10
0
        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());
        }
Exemple #11
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"));
        }
Exemple #12
0
        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));
        }
Exemple #13
0
        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));
        }
Exemple #14
0
        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));
        }
Exemple #15
0
        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));
        }
Exemple #16
0
        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));
        }