public async Task <IActionResult> PutOrder([FromRoute] long id, [FromBody] Order order)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != order.Id)
            {
                return(BadRequest());
            }

            _context.Entry(order).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!OrderExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Exemple #2
0
        public async Task <IActionResult> PutProduct([FromRoute] long id, [FromBody] ProductToUpdateDTO productDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = await _context.Products.FirstOrDefaultAsync(p => p.Id == id);

            Mapper.Map(productDTO, product);

            //product.Label = productDto.Label;
            //product.Price = productDto.Price;
            //product.Available = productDto.Available;
            //product.ImageUri = productDto.ImageUri;

            try
            {
                if (await _context.SaveChangesAsync() == 0)
                {
                    return(StatusCode(500, "A problem happened while handling your request."));
                }
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ProductExists(id))
                {
                    return(NotFound());
                }
                return(StatusCode(500, $"Simultaneously attempt to modify {nameof(Product)} entity."));
            }

            return(NoContent());
        }
        public async Task <IActionResult> PutManufacturer(int id, Manufacturer manufacturer)
        {
            if (id != manufacturer.Id)
            {
                return(BadRequest());
            }
            if (manufacturer.Name == "")
            {
                return(BadRequest("Manufacturer name can't be empty!"));
            }
            if (_context.Manufacturers.Any(m => m.Id != id && m.Name == manufacturer.Name))
            {
                return(BadRequest("Manufacturer name is already taken!"));
            }

            _context.Entry(manufacturer).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ManufacturerExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Exemple #4
0
        public async Task <IActionResult> PutCustomer([FromRoute] long id, [FromBody] CustomerToUpdateDTO customerDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var customer = await _context.Customers.FirstOrDefaultAsync(c => c.Id == id);

            Mapper.Map(customerDTO, customer);

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CustomerExists(id))
                {
                    return(NotFound());
                }
                return(StatusCode(500, $"Simultaneously attempt to modify {nameof(Customer)} entity."));
            }

            return(NoContent());
        }
Exemple #5
0
        public async Task <IActionResult> PutCategory(int id, Category category)
        {
            if (id != category.Id)
            {
                return(BadRequest());
            }

            _context.Entry(category).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CategoryExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Exemple #6
0
        public async Task <IActionResult> PutItem(int id, Item item)
        {
            if (id != item.Id)
            {
                return(BadRequest());
            }

            if (_context.Items.Any(i => i.Id != id && i.Name == item.Name))
            {
                return(BadRequest("Item name is already taken!"));
            }

            _context.Entry(item).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ItemExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> Create([Bind("ID,Name,Price,Unit,ExpiryDate")] Product product)
        {
            if (ModelState.IsValid)
            {
                _context.Add(product);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(product));
        }
Exemple #8
0
        public async Task <ActionResult <Page> > PutPage(Guid id, Page page)
        {
            if (page.Id != id)
            {
                return(BadRequest());
            }

            _context.Entry(page).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            return(NoContent());
        }
        public async Task <IActionResult> Create([Bind("Id,Name,Description,Price")] Product product)
        {
            if (ModelState.IsValid)
            {
                product.Id = Guid.NewGuid();
                _context.Add(product);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(product));
        }
Exemple #10
0
        public async Task <IActionResult> UpdateCart([FromRoute] Guid id, [FromRoute] int count)
        {
            var userid = (User as CustomPrincipal).CurrentIdentity.Id;

            var item = _context.ShopCarts.SingleOrDefault(m => m.UserId == userid && m.CommodityId == id);

            if (item == null)
            {
                return(NotFound());
            }
            item.Count = count;
            await _context.SaveChangesAsync();

            return(Ok());
        }
        public async Task <IActionResult> PostStore([FromBody] Store store)
        {
            var userid = (User as CustomPrincipal).CurrentIdentity.Id;
            var user   = _context.Users.SingleOrDefault(m => m.Id == userid);

            user.Role    = 2;
            store.UserId = userid;
            _context.Stores.Add(store);
            await _context.SaveChangesAsync();

            return(Ok());
        }
        public async Task <IActionResult> Create([FromBody] Order[] orders, [FromQuery] string from)
        {
            var userid = (User as CustomPrincipal).CurrentIdentity.Id;

            foreach (var order in orders)
            {
                order.UserId = userid;
                order.State  = 1;
            }

            var results = orders.Where(m =>
            {
                var commodity = _context.Commodities.Single(n => n.Id == m.CommodityId);
                if (commodity.Surplus < m.Count)
                {
                    return(false);
                }
                return(true);
            });    //判断订单中的商品数量是否小于库存

            foreach (var order in results)
            {
                var commodity = _context.Commodities.Single(m => m.Id == order.CommodityId);
                commodity.Surplus -= order.Count;
            }

            if (from == "cart") //来自购物车的订单,需要先移除购物车
            {
                _context.ShopCarts.RemoveRange(results.Select(m => new ShopCart {
                    CommodityId = m.CommodityId, UserId = m.UserId
                }));
            }

            _context.Orders.AddRange(results);

            await _context.SaveChangesAsync();

            return(Ok());
        }
Exemple #13
0
        public async Task <IActionResult> GetById([FromRoute] Guid id)
        {
            var commodity = await _context.Commodities.Include(m => m.Thumbs).Include(m => m.Orders).SingleOrDefaultAsync(m => m.Id == id);

            if (commodity == null)
            {
                return(NotFound());
            }
            var values = Request.Headers["Authorization"];

            if (values.Count != 0)
            {
                var token  = Base64Helper.Decode(values[0].Substring(6));
                var userid = Guid.Parse(token);

                var item = _context.BrowseHistories.SingleOrDefault(m => m.UserId == userid && m.CommodityId == commodity.Id && m.Datetime.Date == DateTime.Now.Date);
                if (item != null)
                {
                    item.Count += 1;
                }
                else
                {
                    _context.BrowseHistories.Add(new BrowseHistory {
                        UserId = userid, CommodityId = commodity.Id, Count = 1
                    });
                }

                await _context.SaveChangesAsync();
            }

            decimal?rate   = null;
            var     orders = commodity.Orders.Where(m => m.State == 4);

            if (orders.Count() != 0)
            {
                rate = decimal.Round((decimal)orders.Sum(m => m.Rate) / orders.Count(), 1);
            }
            return(Ok(new { id = commodity.Id, name = commodity.Name, description = commodity.Description, thumbs = commodity.Thumbs.Select(m => m.Url), total = commodity.Total, surplus = commodity.Surplus, price = commodity.Price, rate }));
        }
        public async Task <IActionResult> SignUp([FromBody] SignUpViewModel vm)
        {
            var exist = await _context.Users.AnyAsync(m => m.Email == vm.Email);

            if (exist)
            {
                return(BadRequest());
            }

            var user = new User {
                Name = vm.Name, Email = vm.Email, Password = vm.Pass
            };

            _context.Users.Add(user);

            await _context.SaveChangesAsync();

            Response.Cookies.Append("token", Base64Helper.Encode(user.Id.ToString()));

            return(Ok());
        }