Exemple #1
0
        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;
            }));
        }