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 = "資料已更新" })); }
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個字以上,且須含有英文字母及數字。" })); }
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." })); }
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); } } }
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); } } }
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()); }