예제 #1
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Name,Reason,EmployeeId,IsApproved")] WishListItem wishListItem)
        {
            if (id != wishListItem.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(wishListItem);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!WishListItemExists(wishListItem.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["EmployeeId"] = new SelectList(_context.Employees, "Id", "Id", wishListItem.EmployeeId);
            return(View(wishListItem));
        }
        public ActionResult <UserDTO> PostWishListItem(WishListItemNoIdDTO WishListItem)
        {
            User user = _userRepository.GetByEmail(User.Identity.Name);

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

            var WishListItemToCreate = new WishListItem(WishListItem.WishListItemLink, WishListItem.WishListItemName, WishListItem.WishListItemDescription);

            user.WishList.Add(WishListItemToCreate);
            _userRepository.Update(user);
            _userRepository.SaveChanges();
            var userDTO = new UserDTO()
            {
                Email    = user.Email,
                UserName = user.UserName,
                WishList = user.WishList.Select(item => new WishListItemDTO()
                {
                    WishListItemId          = item.WishListItemId,
                    WishListItemLink        = item.WishListItemLink,
                    WishListItemName        = item.WishListItemName,
                    WishListItemDescription = item.WishListItemDescription
                }).ToList()
            };

            return(userDTO);
        }
        public JsonResult RemoveFromWishList(string wishListItemId)
        {
            var    user     = _userManager.GetUserAsync(User).Result;
            string userId   = user.Id;
            var    wishList = _repository.GetWishListByUserId(userId);



            WishListItem wishListItem = _repository.GetWishListItemById(int.Parse(wishListItemId));

            _repository.RemoveWishListItem(wishListItem);



            if (_repository.SaveAll())
            {
                var result = new { Success = "true", message = "Uspešno ste uklonili artikal iz korpe. " };
                return(Json(result));
            }
            else
            {
                var result = new { Success = "true", message = "Uspešno ste uklonili artikal iz korpe. " };
                return(Json(result));
            }
        }
예제 #4
0
        public async Task <IActionResult> OnPostAdd(Guid id)
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."));
            }
            var game = _context.Game.Include(a => a.GameFormatCodeNavigation).Where(a => a.Guid == id).FirstOrDefault();

            if (!_context.WishListItem.Where(a => a.GameId == game.Guid && a.UserId == user.Id).Any())
            {
                WishListItem newWishListItem = new WishListItem()
                {
                    GameId      = id,
                    DateCreated = DateTime.Now,
                    UserId      = user.Id,
                };
                _context.WishListItem.Add(newWishListItem);
                StatusMessage = $"{game.EnglishName} added to wishlist.";
            }
            else
            {
                TempData["message"] = $"{game.EnglishName} is already on wishlist.";
            }
            await _context.SaveChangesAsync();

            return(RedirectToPage());
        }
예제 #5
0
        public async Task AddItemToWishList(ApplicationUser user,
                                            WishListItem product)
        {
            var cart = await GetWishList(user);

            _logger.LogDebug("User Name: " + user.Id);
            if (cart == null)
            {
                cart = new WishList()
                {
                    BuyerId = user.Id,
                    Items   = new List <WishListItem>()
                };
            }
            var basketItem = cart.Items
                             .Where(p => p.ProductId == product.ProductId)
                             .FirstOrDefault();

            if (basketItem == null)
            {
                cart.Items.Add(product);
            }
            else
            {
                basketItem.Quantity += 1;
            }


            await UpdateWishList(cart);
        }
        public async Task <IActionResult> AddToWishList(EventItem productDetails)
        {
            try
            {
                if (productDetails.Id != null)
                {
                    var user    = _identityService.Get(HttpContext.User);
                    var product = new WishListItem()
                    {
                        Id          = Guid.NewGuid().ToString(),
                        Quantity    = 1,
                        ProductName = productDetails.Name,
                        PictureUrl  = productDetails.PictureUrl,
                        UnitPrice   = productDetails.Price,
                        ProductId   = productDetails.Id
                    };
                    await _cartService.AddItemToWishList(user, product);
                }
            }
            catch (BrokenCircuitException)
            {
                // Catch error when CartApi is in circuit-opened mode
                HandleBrokenCircuitException();
            }

            return(RedirectToAction("Index", "WishList"));
        }
        internal void RejectBy(User user, WishListItem item)
        {
            if (Status != WishListItemStatus.Requested &&
                Status != WishListItemStatus.RequestedToDirector)
            {
                throw new CannotRejectWishListItemWithCurrentStatusException(Status);
            }

            if (Status == WishListItemStatus.Requested)
            {
                if (!user.IsLeaderOf(item.Owner))
                {
                    throw new UserDoesNotHavePermissionToRejectRequestedWishListItemException();
                }

                item.State = Rejected;

                return;
            }

            if (!user.IsDirectorOf(item.Owner))
            {
                throw new UserDoesNotHavePermissionToRejectRequestedWishListItemException();
            }

            item.State = Rejected;
        }
        public void It_should_return_correct_value_for_training_with_side_costs()
        {
            // Given
            const decimal accommodationCost = 200;
            const decimal transportCost     = 300;

            var sideCosts = new SideCosts
            {
                AccommodationCost         = accommodationCost,
                DailyAllowanceCost        = transportCost,
                IncludeAccommodationCost  = true,
                IncludeDailyAllowanceCost = true
            };

            var training = new WishListItem(
                WishListItemType.Training,
                BasePrice,
                sideCosts: sideCosts);

            const decimal expectedResult = BasePrice + accommodationCost + transportCost;

            // When
            var result = training.CalculateCost();

            // Then
            Assert.That(result, Is.EqualTo(expectedResult));
        }
        public async Task <IActionResult> AddToWishList(int gameId)
        {
            //When user clicks add to wishlist,
            //check if the user has a wishlist if not create it
            //once wishlist is found or created, create wishlist item entry with gameid
            WishList     wl;
            WishListItem wli;
            var          userId = util.GetAccountId(User.Identity.Name);

            var wlRecord = _context.WishList.FirstOrDefault(a => a.AccountId == userId);

            if (wlRecord == null)
            {
                //create wishlist
                wl           = new WishList();
                wl.AccountId = userId;
                wl.IsPublic  = false;

                _context.WishList.Add(wl);
                await _context.SaveChangesAsync();

                wlRecord = _context.WishList.FirstOrDefault(a => a.AccountId == userId);
            }

            wli            = new WishListItem();
            wli.WishListId = wlRecord.WishListId;
            wli.GameId     = gameId;
            _context.WishListItem.Add(wli);
            await _context.SaveChangesAsync();

            return(RedirectToAction("Details", new { id = gameId }));
        }
예제 #10
0
        public void It_should_return_correct_value_for_foreing_conference_with_side_costs()
        {
            // Given
            const decimal accommodationCost = 200;
            const decimal transportCost     = 300;

            var sideCosts = new SideCosts
            {
                AccommodationCost         = accommodationCost,
                DailyAllowanceCost        = transportCost,
                IncludeAccommodationCost  = true,
                IncludeDailyAllowanceCost = true
            };

            var conference = new WishListItem(
                WishListItemType.Conference,
                BasePrice,
                location: LocationType.Foreign,
                sideCosts: sideCosts);

            const decimal conferenceCost = BasePrice * ForeignConferenceMultiplicator;
            const decimal expectedResult = conferenceCost + accommodationCost + transportCost;

            // When
            var result = conference.CalculateCost();

            // Then
            Assert.That(result, Is.EqualTo(expectedResult));
        }
        internal override decimal CalculateCost(WishListItem item)
        {
            var totalCost = item.ItemCost;

            if (item.Location == LocationType.Foreign)
            {
                totalCost *= 0.7m;
            }

            if (item.SideCosts.IncludeAccommodationCost)
            {
                totalCost += item.SideCosts.AccommodationCost;
            }

            if (item.SideCosts.IncludeDailyAllowanceCost)
            {
                totalCost += item.SideCosts.DailyAllowanceCost;
            }

            if (item.SideCosts.IncludeTransportCost)
            {
                totalCost += item.SideCosts.TransportCost;
            }

            return(totalCost);
        }
예제 #12
0
        public ActionResult ItemWishList(int ItemID, WishListItem usrWishList)
        {
            if (ModelState.IsValid)
            {
                using (db)
                {
                    UserAccount listedByUsr = db.UserAccounts.Where(u => u.UserName.Equals(User.Identity.Name.ToString())).FirstOrDefault();
                    bool        obj         = db.WishListItems.Any(x => x.ItemID == ItemID && x.WishListedBy == listedByUsr.UserID);
                    if (obj == false)
                    {
                        usrWishList.ItemID       = ItemID;
                        usrWishList.WishListedBy = listedByUsr.UserID;
                        db.WishListItems.Add(usrWishList);
                    }
                    else
                    {
                        WishListItem a = db.WishListItems.Where(x => x.ItemID == ItemID).Where(x => x.WishListedBy == listedByUsr.UserID).FirstOrDefault();
                        db.WishListItems.Remove(a);
                    }

                    db.SaveChanges();
                    ModelState.Clear();

                    return(RedirectToAction("ItemDetails", "Item", new { ItemID = ItemID }));
                }
            }
            return(View(usrWishList));
        }
        internal override decimal CalculateCost(WishListItem item)
        {
            var totalCost = item.ItemCost;

            if (item.ApproachNumber == 2)
            {
                totalCost /= 2;
            }
            else if (item.ApproachNumber == 3)
            {
                totalCost /= 4;
            }
            else if (item.ApproachNumber > 3)
            {
                totalCost = 0;
            }

            if (item.SideCosts.IncludeAccommodationCost)
            {
                totalCost += item.SideCosts.AccommodationCost;
            }

            if (item.SideCosts.IncludeDailyAllowanceCost)
            {
                totalCost += item.SideCosts.DailyAllowanceCost;
            }

            if (item.SideCosts.IncludeTransportCost)
            {
                totalCost += item.SideCosts.TransportCost;
            }

            return(totalCost);
        }
예제 #14
0
        /// <summary>
        /// Retourne la liste des volumes souhaités par le lecteur.
        /// </summary>
        /// <param name="cardNum"></param>
        /// <param name="listToReturn"></param>
        public static void GetWishListByCardNum(int cardNum, ref List <WishListItem> listToReturn)
        {
            StringBuilder sLog = new StringBuilder();

            listToReturn.Clear();
            using (ExamSGBD2017Entities dbEntity = new ExamSGBD2017Entities())
            {
                try
                {
                    foreach (GetWishlist_Result vWish in dbEntity.GetWishlist(cardNum))
                    {
                        WishListItem wishListItem = new WishListItem();

                        wishListItem.Id        = vWish.Id;
                        wishListItem.CardNum   = vWish.CardNum;
                        wishListItem.Volume_Id = vWish.Volume_Id;
                        wishListItem.Isbn      = vWish.Isbn;
                        //  wishListItem.Title = vWish. ;
                        wishListItem.Cover = vWish.Cover;

                        listToReturn.Add((wishListItem));
                    }
                }
                catch (Exception ex)
                {
                    int DefaultError = 7; //"Problème à la récupération des données !"
                    throw new EL.CstmError(DefaultError, ex);
                }
            }
        }
예제 #15
0
        public async Task <bool> ToogleWishListItem(string userId, long bookId)
        {
            try
            {
                if (!db.AppUsers.Any(x => x.Id == userId) || !db.Books.Any(x => x.Id == bookId))
                {
                    return(false);
                }
                string wishListId = await GetWishListId(userId);

                var existingItem = await db.WishListItems.SingleOrDefaultAsync(x => x.BookId == bookId && x.WishListId == wishListId);

                if (existingItem != null)
                {
                    db.WishListItems.Remove(existingItem);
                    return(await SaveChangesAsync());
                }
                else
                {
                    WishListItem wishListItem = new WishListItem
                    {
                        BookId     = bookId,
                        WishListId = wishListId
                    };
                    db.WishListItems.Add(wishListItem);
                    return(await SaveChangesAsync());
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
예제 #16
0
        public ActionResult AddToCart(long itemid)
        {
            string       customerId = SessionManager.GetCurrentUserId(MTApp.CurrentStore);
            WishListItem wi         = MTApp.CatalogServices.WishListItems.Find(itemid);

            if (wi != null)
            {
                if (wi.CustomerId == customerId)
                {
                    // Add to Cart
                    Product p = MTApp.CatalogServices.Products.Find(wi.ProductId);

                    bool IsPurchasable = ValidateSelections(p, wi);
                    if ((IsPurchasable))
                    {
                        LineItem li = MTApp.CatalogServices.ConvertProductToLineItem(p,
                                                                                     wi.SelectionData,
                                                                                     1,
                                                                                     MTApp);
                        Order Basket = SessionManager.CurrentShoppingCart(MTApp.OrderServices, MTApp.CurrentStore);
                        if (Basket.UserID != SessionManager.GetCurrentUserId(MTApp.CurrentStore))
                        {
                            Basket.UserID = SessionManager.GetCurrentUserId(MTApp.CurrentStore);
                        }

                        MTApp.AddToOrderWithCalculateAndSave(Basket, li);
                        SessionManager.SaveOrderCookies(Basket, MTApp.CurrentStore);

                        return(Redirect("~/cart"));
                    }
                }
            }
            return(RedirectToAction("index"));
        }
        internal void AcceptBy(User user, WishListItem item)
        {
            if (Status != WishListItemStatus.Requested &&
                Status != WishListItemStatus.RequestedToDirector)
            {
                throw new CannotAcceptWishListItemWithCurrentStatusException(Status);
            }

            if (Status == WishListItemStatus.Requested)
            {
                if (!user.IsLeaderOf(item.Owner))
                {
                    throw new UserDoesNotHavePermissionToAcceptRequestedWishListItemException();
                }

                if (ShouldBeRequestedToDirector(item.ItemCost))
                {
                    item.State = RequestedToDirector;
                }
                else
                {
                    item.State = Accepted;
                }

                return;
            }

            if (!user.IsDirectorOf(item.Owner))
            {
                throw new UserDoesNotHavePermissionToAcceptRequestedWishListItemException();
            }

            item.State = Accepted;
        }
예제 #18
0
        public void It_should_return_correct_value_for_exam_with_side_costs(
            int aproachNumber,
            decimal expectedPriceMultiplicator)
        {
            // Given
            const decimal accommodationCost = 200;
            const decimal transportCost     = 300;

            var sideCosts = new SideCosts
            {
                AccommodationCost         = accommodationCost,
                DailyAllowanceCost        = transportCost,
                IncludeAccommodationCost  = true,
                IncludeDailyAllowanceCost = true
            };

            var exam = new WishListItem(
                WishListItemType.Exam,
                BasePrice,
                VendorName,
                approachNumber: aproachNumber,
                sideCosts: sideCosts);

            var expectedExamPrice  = BasePrice * expectedPriceMultiplicator;
            var expectedTotalPrice = expectedExamPrice + accommodationCost + transportCost;

            // When
            var result = exam.CalculateCost();

            // Then
            Assert.That(result, Is.EqualTo(expectedTotalPrice));
        }
예제 #19
0
        public string AddToWishList(int userId, long productId)
        {
            using (_context)
            {
                try
                {
                    List <Product> listOfProducts;


                    _context.product.Include(acc => acc.Category).ToList();
                    _context.product.Include(acc => acc.productDesign).ThenInclude(acc => acc.product_design_images).ThenInclude(acc => acc.ProductImage).ToList();
                    _context.product.Include(acc => acc.productDesign).ThenInclude(acc => acc.productColor).ToList();
                    _context.product.Include(acc => acc.productDesign).ThenInclude(acc => acc.productSize).ToList();

                    _context.product.Include(acc => acc.product_images).ToList();
                    _context.product.Include(acc => acc.StichingType).ToList();
                    _context.product.Include(acc => acc.Fabric).ToList();
                    _context.product.Include(acc => acc.Vendor).ToList();

                    listOfProducts = _context.product.ToList();



                    WishListItem wishListItem = new WishListItem()
                    {
                        product = listOfProducts.Where(e => e.Product_ID == productId).FirstOrDefault()
                    };
                    if (wishListItem == null)
                    {
                        return("No product exist please choose a right product");
                    }
                    WishList wishListOfUser = _context.wishList.Where(e => e.AccountId == userId).Include(e => e.WishListItems).FirstOrDefault();
                    if (wishListOfUser == null)
                    {
                        _context.wishList.Add(new WishList()
                        {
                            AccountId     = userId,
                            account       = _context.account.Where(e => e.Id == userId).FirstOrDefault(),
                            WishListItems = new List <WishListItem>()
                            {
                                wishListItem
                            }
                        });
                    }
                    else
                    {
                        wishListOfUser.WishListItems.Add(wishListItem);
                    }

                    _context.SaveChanges();
                }
                catch (Exception e)
                {
                    return("Unable to add due to exception as >>> " + e.Message);
                }
            }

            return("Saved Successfully");
        }
        internal override decimal CalculateCost(WishListItem item)
        {
            var totalCost = item.ItemCost;

            totalCost = ModifyCostBySpecificRules(item, totalCost);

            return(totalCost);
        }
예제 #21
0
        public ActionResult DeleteConfirmed(int id)
        {
            WishListItem wishListItem = db.WishListItems.Find(id);

            db.WishListItems.Remove(wishListItem);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        internal override decimal CalculateCost(WishListItem item)
        {
            var totalCost = item.ItemCost;

            totalCost += CalculateSideCosts(item.SideCosts);

            return(totalCost);
        }
        // GET: WishListItems/Create
        public ActionResult Create()
        {
            ViewBag.AccountID = new SelectList(db.Accounts, "Id", "recipientMailID");
            WishListItem wsItem = new WishListItem();

            wsItem.dateAdded = DateTime.Today;
            return(View(wsItem));
        }
예제 #24
0
        public async Task <IActionResult> Post(long wishListId, [FromBody] WishListItem item)
        {
            var response = await _mediator.Send(new AddWishListItemRequest()
            {
                Username = User.GetUsername(), WishListId = wishListId, Item = item
            });

            return(Created($"{wishListId}/items", item));
        }
예제 #25
0
        protected override decimal ModifyCostBySpecificRules(WishListItem item, decimal totalCost)
        {
            if (item.Location == LocationType.Foreign)
            {
                totalCost *= 0.7m;
            }

            return(totalCost);
        }
        internal override void AcceptBy(User user, WishListItem item)
        {
            if (!user.IsDirectorOf(item.Owner))
            {
                throw new UserDoesNotHavePermissionToAcceptRequestedWishListItemException();
            }

            item.State = Accepted;
        }
예제 #27
0
        internal void RejectBy(User user, WishListItem item)
        {
            if (!user.IsDirectorOf(item.Owner))
            {
                throw new UserDoesNotHavePermissionToRejectRequestedWishListItemException();
            }

            item.State = Rejected;
        }
예제 #28
0
        internal decimal CalculateCost(WishListItem item)
        {
            var totalCost = item.ItemCost;

            totalCost  = ModifyCostBySpecificRules(item, totalCost);
            totalCost += CalculateSideCosts(item.SideCosts);

            return(totalCost);
        }
        internal override void StartRealizationBy(User user, WishListItem item)
        {
            if (!user.IsSupervisor)
            {
                throw new UserDoesNotHavePermissionToStartWishListItemRealizationException();
            }

            item.State = InRealization;
        }
        private decimal ModifyCostBySpecificRules(WishListItem item, decimal totalCost)
        {
            if (item.VendorsWithDiscounts.ContainsKey(item.VendorName))
            {
                var discountAmount = totalCost * item.VendorsWithDiscounts[item.VendorName];
                totalCost -= discountAmount;
            }

            return(totalCost);
        }