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); }
public async Task<IHttpActionResult> GetProductType(int id) { ProductType productType = await db.ProductTypes.Include(pt => pt.ProductGroups).SingleOrDefaultAsync(pt => pt.Id == id); if (productType == null) { return NotFound(); } var productTypeDto = new ProductTypeDetailsDto {Color = productType.Color, Name = productType.Name, Id = productType.Id, Price = productType.Price, ProductGroups = new List<long>()}; productType.ProductGroups.ForEach(pt => productTypeDto.ProductGroups.Add(pt.Id)); return Ok(productTypeDto); }
public async Task<IHttpActionResult> PostProductType(ProductTypeDetailsDto productTypeDetails) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var workwrok = productTypeDetails.ProductGroups; List<ProductGroup> productGroups = new List<ProductGroup>(); foreach (var i in workwrok) { var pG = from pg in db.ProductGroups where pg.Id == i select pg; pG.ForEach(pg => productGroups.Add(pg)); } var productType = new ProductType { Color = productTypeDetails.Color, Name = productTypeDetails.Name, Price = productTypeDetails.Price}; productGroups?.ForEach(e => productType.ProductGroups.Add(e)); db.ProductTypes.Add(productType); await db.SaveChangesAsync(); productTypeDetails.Id = productType.Id; return CreatedAtRoute("DefaultApi", new { id = productTypeDetails.Id }, productTypeDetails); }