public HttpResponseMessage Update(HttpRequestMessage request, ProductModel ProductVm) { return(CreateHttpResponse(request, () => { HttpResponseMessage response = null; if (!ModelState.IsValid) { response = request.CreateResponse(HttpStatusCode.BadRequest, ModelState); } else { // Create tag mới var TagsCreate = ProductVm.Tags.Where(x => x.isNew == true).ToList(); var ListTags = Mapper.Map <List <TagModel>, List <Tag> >(TagsCreate); var ListTagCreate = _Tag.AddTags(ListTags); /// Update product var modelVm = Mapper.Map <ProductModel, Product>(ProductVm); _Product.Update(modelVm); _Product.Save(); // select các tag cũ var AllOldTag = _ProductTagReporistory.GetProductTagByProductID(modelVm.ProductID); // var AllDeletedTag = AllOldTag.Intersect(ProductVm.Tags.Where()); /// Tag tag List <ProductTag> ListProductTag = new List <ProductTag>(); foreach (var Tag in ProductVm.Tags.Where(x => x.isNew == false).ToList()) { ProductTag ProductTag = new ProductTag(); ProductTag.ProductID = modelVm.ProductID; ProductTag.TagID = Convert.ToInt32(Tag.id); ListProductTag.Add(ProductTag); } foreach (var Tag in ListTagCreate) { ProductTag ProductTag = new ProductTag(); ProductTag.ProductID = modelVm.ProductID; ProductTag.TagID = Tag.TagID; ListProductTag.Add(ProductTag); } _ProductTagReporistory.CreateProductTag(ListProductTag); _ProductTagReporistory.Save(); var responseData = Mapper.Map <Product, ProductModel>(modelVm); response = request.CreateResponse(HttpStatusCode.Created, responseData); } return response; })); }