public async Task <IActionResult> PutProduct(int id, Product product)
        {
            if (id != product.ID)
            {
                return(BadRequest());
            }

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

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

            return(NoContent());
        }
コード例 #2
0
        public async Task<IHttpActionResult> PutSalesOrder(long id, SalesOrder salesOrder)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

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

            db.Entry(salesOrder).State = EntityState.Modified;

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

            return StatusCode(HttpStatusCode.NoContent);
        }
コード例 #3
0
        public async Task <IHttpActionResult> PutTransaction(long id, Transaction transaction)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

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

            db.Entry(transaction).State = EntityState.Modified;

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

            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #4
0
        public async Task <IHttpActionResult> PutProductTab(int id, ProductTabDetailsDto productTabDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var ProductTypeList             = productTabDetails.ProductTypes;
            List <ProductType> productTypes = new List <ProductType>();

            foreach (var i in ProductTypeList)
            {
                var pT = from pt in db.ProductTypes where pt.Id == i select pt;
                pT.ForEach(pt => productTypes.Add(pt));
            }

            var productTab = db.ProductTabs.Find(id);

            if (productTab != null)
            {
                productTab.Active   = productTabDetails.Active;
                productTab.Color    = productTabDetails.Color;
                productTab.Name     = productTabDetails.Name;
                productTab.Priority = productTabDetails.Priority;
            }

            productTab.ProductTypes.Clear();

            productTypes?.ForEach(e => productTab.ProductTypes.Add(e));



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

            db.Set <ProductTab>().Attach(productTab);
            db.Entry(productTab).State = EntityState.Modified;

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

            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #5
0
        public async Task <IHttpActionResult> PutProductType(int id, ProductTypeDetailsDto productTypeDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var ProductGroupList = productTypeDetails.ProductGroups;
            List <ProductGroup> productGroups = new List <ProductGroup>();

            foreach (var i in ProductGroupList)
            {
                var pG = from pg in db.ProductGroups where pg.Id == i select pg;
                pG.ForEach(pg => productGroups.Add(pg));
            }

            var productType = db.ProductTypes.Find(id);

            if (productType != null)
            {
                productType.Color = productTypeDetails.Color;
                productType.Name  = productTypeDetails.Name;
                productType.Price = productTypeDetails.Price;
            }

            productType.ProductGroups.Clear();

            productGroups?.ForEach(e => productType.ProductGroups.Add(e));


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

            db.Set <ProductType>().Attach(productType);
            db.Entry(productType).State = EntityState.Modified;

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

            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #6
0
        public async Task <IHttpActionResult> PutProductGroup(long id, ProductGroupDetailsDto productGroupDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var            ProductList = productGroupDetails.Products;
            List <Product> products    = new List <Product>();

            foreach (var i in ProductList)
            {
                var product = from pr in db.Products where pr.Id == i select pr;
                product.ForEach(pr => products.Add(pr));
            }

            var productGroup = db.ProductGroups.Find(id);

            if (productGroup != null)
            {
                productGroup.Name = productGroupDetails.Name;
            }

            productGroup.Products.Clear();

            products?.ForEach(e => productGroup.Products.Add(e));

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

            db.Set <ProductGroup>().Attach(productGroup);
            db.Entry(productGroup).State = EntityState.Modified;

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

            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #7
0
        public async Task <ActionResult <Receipt> > PostReceipt(List <ReceiptLineDto> receiptLineDto)
        {
            // Read product data from DB for incoming product IDs
            var products = new Dictionary <int, Product>();

            var productsArr = await _context.Products.ToListAsync();

            foreach (var p in productsArr)
            {
                products[p.ID] = p;
            }

            try
            {
                // Build receipt from DTO
                var newReceipt = new Receipt
                {
                    ReceiptTimestamp = DateTime.UtcNow,
                    ReceiptLines     = receiptLineDto.Select(rl => new ReceiptLine
                    {
                        ID            = 0,
                        BoughtProduct = products[rl.ProductID],
                        Amount        = rl.Amount,
                        TotalPrice    = rl.Amount * products[rl.ProductID].UnitPrice
                    }).ToList()
                };
                newReceipt.TotalPrice = newReceipt.ReceiptLines.Sum(rl => rl.TotalPrice);
                if (newReceipt.ReceiptLines.Count == 0)
                {
                    return(BadRequest());
                }
                _context.Receipts.Add(newReceipt);
                await _context.SaveChangesAsync();

                return(CreatedAtAction("GetReceipt", new { id = newReceipt.ID }, newReceipt));
            }
            catch (KeyNotFoundException e)
            {
                return(BadRequest());
            }
        }