Пример #1
0
        public IActionResult AlterProfile([FromBody] AlertProfileRequestModel request)
        {
            string account = _http.HttpContext.Session.GetString("account");

            if (string.IsNullOrEmpty(account) || account != request.account)
            {
                return(Ok(new ResultResponseModel {
                    isSuccess = false, message = "登入時效已過,請重新登入。", redirectTo = "/login"
                }));
            }

            if (ModelState.IsValid)
            {
                Member user = _db.Members.Where(member => member.Account == account).FirstOrDefault();

                user.Username = request.username;
                user.Address  = request.address;
                user.Phone    = request.phone;
                user.Email    = request.email;

                _db.SaveChanges();
            }

            return(Ok(new ResultResponseModel {
                isSuccess = true, message = "資料已更新"
            }));
        }
Пример #2
0
        public IActionResult SignUp([FromBody] SignUpRequestModel request)
        {
            if (ModelState.IsValid)
            {
                PasswordWithSalt pws = HashHelper.Hash(request.password);

                if (_db.Members.Where(member => member.Account == request.account).FirstOrDefault() == null)
                {
                    _db.Members.Add(new Member()
                    {
                        Account  = request.account,
                        Password = pws.password,
                        Salt     = pws.salt
                    });
                }
                else
                {
                    return(Ok(new ResultResponseModel {
                        isSuccess = false, message = "此組帳號已被註冊,請使用其他帳號。"
                    }));
                }

                _db.SaveChanges();

                return(Ok(new ResultResponseModel {
                    isSuccess = true, message = "signed up."
                }));
            }

            return(Ok(new ResultResponseModel {
                isSuccess = false, message = "帳號與密碼皆須至少8個字以上,且須含有英文字母及數字。"
            }));
        }
Пример #3
0
        public IActionResult Add([FromBody] CartRequestModel request)
        {
            string account = _http.HttpContext.Session.GetString("account");
            Member user    = _db.Members.Where(member => member.Account == account).FirstOrDefault();

            if (string.IsNullOrEmpty(account) || user == null)
            {
                return(Ok(new ResultResponseModel {
                    isSuccess = false, message = "Please login to continue.", redirectTo = "/login"
                }));
            }

            if (ModelState.IsValid)
            {
                user.Carts = _db.Carts.Where(cart => cart.MemberId == user.Id).ToList();

                if (user.Carts.Exists(cart => cart.ProductId == request.productId))
                {
                    Cart cart = user.Carts.Find(cart => cart.ProductId == request.productId);

                    cart.Product = _db.Products.Where(product => product.Id == cart.ProductId).FirstOrDefault();

                    if (cart.Quantity + request.quantity > cart.Product.Stock)
                    {
                        cart.Quantity = cart.Product.Stock;
                    }
                    else
                    {
                        cart.Quantity += request.quantity;
                    }
                }
                else
                {
                    Product product = _db.Products.Where(product => product.Id == request.productId).FirstOrDefault();

                    _db.Carts.Add(new Cart {
                        MemberId = user.Id, ProductId = request.productId, Quantity = request.quantity > product.Stock ? product.Stock : request.quantity
                    });
                }

                _db.SaveChanges();

                return(Ok(new ResultResponseModel {
                    isSuccess = true, message = "Added to cart."
                }));
            }

            return(Ok(new ResultResponseModel {
                isSuccess = false, message = "Failed to add product to cart."
            }));
        }
Пример #4
0
        public void RegisterUser()
        {
            using (var db = new WebstoreContext())
            {
                Console.WriteLine("Type username: "******"Created new user with the ID: {0}", GetUserIdByName(newUsername));

                var newUserQuery = from u in db.Users
                                   where newUsername == u.Username
                                   select u;

                foreach (var item in newUserQuery)
                {
                    Console.WriteLine("New user created: {0}", item.Username);
                }
            }
        }
Пример #5
0
        public void CreateProduct()
        {
            using (var db = new WebstoreContext())
            {
                Console.WriteLine("Type product name");
                var prodName = Console.ReadLine();

                Console.WriteLine("Type product price");
                var prodPrice = Double.Parse(Console.ReadLine());

                var newProduct = new Product {
                    Name = prodName, Price = prodPrice
                };

                db.Products.Add(newProduct);
                db.SaveChanges();

                Console.WriteLine("Created new product with the ID: {0}", GetProductIdByName(newProduct.Name));

                var newProductQuery = from p in db.Products
                                      where prodName == p.Name
                                      select p;

                foreach (var product in newProductQuery)
                {
                    Console.WriteLine("New product created: {0}", product.Name);
                }
            }
        }
Пример #6
0
        public IActionResult Insert([FromForm] OrderInsertRequestModel request)
        {
            string account = _http.HttpContext.Session.GetString("account");
            Member user    = _db.Members.Where(member => member.Account == account).FirstOrDefault();

            if (string.IsNullOrEmpty(account) || user == null)
            {
                return(RedirectToAction("Index", "Login"));
            }

            if (ModelState.IsValid)
            {
                user.Carts = _db.Carts.Where(cart => cart.MemberId == user.Id).ToList();
                user.Carts.ForEach(cart =>
                {
                    cart.Product        = _db.Products.Where(product => product.Id == cart.ProductId).FirstOrDefault();
                    cart.Product.Images = _db.Images.Where(image => image.ProductId == cart.Product.Id).OrderBy(image => image.Order).Take(1).ToList();
                });

                if (request.Check(user.Carts))
                {
                    string dateToday      = DateTime.Now.ToString("yyyyMMdd");
                    long   newOrderNumber = _db.Orders.Where(order => order.OrderNumber.ToString().Substring(0, 8) == dateToday).OrderByDescending(order => order.OrderNumber).Select(order => order.OrderNumber).FirstOrDefault();

                    if (newOrderNumber == 0)
                    {
                        newOrderNumber = long.Parse(dateToday + "00001");
                    }
                    else
                    {
                        newOrderNumber++;
                    }

                    _db.Orders.Add(new Order
                    {
                        OrderNumber = newOrderNumber,
                        MemberId    = user.Id,
                        Consignee   = request.consignee,
                        PhoneNumber = request.phonenumber,
                        Address     = request.address,
                        Remark      = request.remark
                    });
                    _db.SaveChanges();

                    Order            currentOrder  = _db.Orders.Where(order => order.OrderNumber == newOrderNumber).FirstOrDefault();
                    List <OrderItem> newOrderItems = new List <OrderItem>();

                    user.Carts.ForEach(cart =>
                    {
                        _db.OrderItems.Add(new OrderItem
                        {
                            OrderId   = currentOrder.Id,
                            ProductId = cart.ProductId,
                            Quantity  = cart.Quantity,
                            Price     = cart.Product.Price
                        });

                        _db.Products.Where(product => product.Id == cart.ProductId).FirstOrDefault().Stock -= cart.Quantity;
                    });

                    _db.Carts.RemoveRange(user.Carts);
                    _db.OrderStatues.Add(new OrderStatus
                    {
                        OrderId = currentOrder.Id,
                        StateId = (int)StateIDs.Placed,
                        Date    = DateTime.Now
                    });

                    _db.SaveChanges();

                    currentOrder.Member     = user;
                    currentOrder.OrderItems = _db.OrderItems.Where(orderItem => orderItem.OrderId == currentOrder.Id).ToList();
                    currentOrder.OrderItems.ForEach(orderItem => { orderItem.Product = _db.Products.Where(product => product.Id == orderItem.ProductId).FirstOrDefault(); });
                    currentOrder.OrderStatuses = _db.OrderStatues.Where(orderStatus => orderStatus.OrderId == currentOrder.Id).ToList();
                    currentOrder.OrderStatuses.ForEach(orderStatus => { orderStatus.State = _db.States.Where(state => state.Id == orderStatus.StateId).FirstOrDefault(); });

                    return(View(currentOrder));
                }
                else
                {
                    ViewBag.errorMessage = request.errorMessage;
                }
            }

            return(View());
        }