public ActionResult Delete(string[] ids)
        {
            try
            {
                if (ids.Length != 0)
                {
                    var attributeValues =
                        from id in ids
                        select _attributeValueService.GetById(int.Parse(id));

                    _attributeValueService.BatchDelete(attributeValues);
                }
            }
            catch (Exception exception1)
            {
                var exception = exception1;
                LogText.Log(string.Concat("District.Delete: ", exception.Message));
            }
            return(RedirectToAction("Index"));
        }
        public ActionResult Create(PostViewModel model, string returnUrl)
        {
            ActionResult action;

            try
            {
                if (!ModelState.IsValid)
                {
                    var messages = String.Join(Environment.NewLine, ModelState.Values.SelectMany(v => v.Errors)
                                               .Select(v => v.ErrorMessage + " " + v.Exception));
                    ModelState.AddModelError("", messages);
                    return(View(model));
                }

                var titleNonAccent = model.Title.NonAccent();
                var bySeoUrl       = _postService.GetListSeoUrl(titleNonAccent);

                model.SeoUrl = model.Title.NonAccent();
                if (bySeoUrl.Any(x => x.Id != model.Id))
                {
                    var postViewModel = model;
                    postViewModel.SeoUrl = string.Concat(postViewModel.SeoUrl, "-", bySeoUrl.Count());
                }

                var folderName = Utils.FolderName(model.Title);
                if (model.Image != null && model.Image.ContentLength > 0)
                {
                    var fileNameOriginal = Path.GetFileNameWithoutExtension(model.Image.FileName);
                    var fileExtension    = Path.GetExtension(model.Image.FileName);

                    var fileName1 = fileNameOriginal.FileNameFormat(fileExtension);
                    var fileName2 = fileNameOriginal.FileNameFormat(fileExtension);
                    var fileName3 = fileNameOriginal.FileNameFormat(fileExtension);

                    _imagePlugin.CropAndResizeImage(model.Image, $"{Contains.PostFolder}{folderName}/", fileName1, ImageSize.WithBigSize, ImageSize.HeightBigSize, true);
                    _imagePlugin.CropAndResizeImage(model.Image, $"{Contains.PostFolder}{folderName}/", fileName2, ImageSize.WithMediumSize, ImageSize.HeightMediumSize, true);
                    _imagePlugin.CropAndResizeImage(model.Image, $"{Contains.PostFolder}{folderName}/", fileName3, ImageSize.WithSmallSize, ImageSize.HeightSmallSize, true);

                    model.ImageBigSize    = $"{Contains.PostFolder}{folderName}/{fileName1}";
                    model.ImageMediumSize = $"{Contains.PostFolder}{folderName}/{fileName2}";
                    model.ImageSmallSize  = $"{Contains.PostFolder}{folderName}/{fileName3}";
                }

                var menuId = model.MenuId;
                var i      = 0;
                if (menuId.GetValueOrDefault() > i && menuId.HasValue)
                {
                    var menuLinkService = _menuLinkService;
                    menuId = model.MenuId;
                    var byId = menuLinkService.GetById(menuId.Value);
                    model.VirtualCatUrl     = byId.VirtualSeoUrl;
                    model.VirtualCategoryId = byId.VirtualId;
                }

                //Gallery image
                var files         = Request.Files;
                var galleryImages = new List <GalleryImage>();
                if (files.Count > 0)
                {
                    var count   = files.Count - 1;
                    var num     = 0;
                    var allKeys = files.AllKeys;
                    for (i = 0; i < allKeys.Length; i++)
                    {
                        var str7 = allKeys[i];
                        if (num <= count)
                        {
                            if (!str7.Equals("Image"))
                            {
                                var str8 = str7.Replace("[]", "");
                                var item = files[num];
                                if (item.ContentLength > 0)
                                {
                                    var item1 = Request[str8];
                                    var galleryImageViewModel = new GalleryImageViewModel
                                    {
                                        PostId           = model.Id,
                                        AttributeValueId = int.Parse(str8)
                                    };

                                    var fileNameOriginal = Path.GetFileNameWithoutExtension(item.FileName);
                                    var fileExtension    = Path.GetExtension(item.FileName);

                                    var fileName1 = $"attr.{ fileNameOriginal}".FileNameFormat(fileExtension);
                                    var fileName2 = $"attr.{ fileNameOriginal}".FileNameFormat(fileExtension);

                                    _imagePlugin.CropAndResizeImage(item, $"{Contains.PostFolder}{folderName}/", fileName1, ImageSize.WithBigSize, ImageSize.HeightBigSize, true);
                                    _imagePlugin.CropAndResizeImage(item, $"{Contains.PostFolder}{folderName}/", fileName2, ImageSize.WithThumbnailSize, ImageSize.HeightThumbnailSize, true);

                                    galleryImageViewModel.ImageBig       = $"{Contains.PostFolder}{folderName}/{fileName1}";
                                    galleryImageViewModel.ImageThumbnail = $"{Contains.PostFolder}{folderName}/{fileName2}";

                                    galleryImageViewModel.OrderDisplay = num;
                                    galleryImageViewModel.Status       = 1;
                                    galleryImageViewModel.Title        = model.Title;
                                    galleryImageViewModel.Price        = double.Parse(item1);

                                    galleryImages.Add(Mapper.Map <GalleryImage>(galleryImageViewModel));
                                }
                                num++;
                            }
                            else
                            {
                                num++;
                            }
                        }
                    }
                }

                //Attribute
                var attributeValues = new List <AttributeValue>();
                var item2           = Request["Values"];
                if (!string.IsNullOrEmpty(item2))
                {
                    foreach (var list in item2.Split(',').ToList())
                    {
                        var num1 = int.Parse(list);
                        attributeValues.Add(_attributeValueService.GetById(num1));
                    }
                }

                var modelMap = Mapper.Map <PostViewModel, Post>(model);
                if (galleryImages.IsAny())
                {
                    modelMap.GalleryImages = galleryImages;
                }
                if (attributeValues.IsAny())
                {
                    modelMap.AttributeValues = attributeValues;
                }

                _postService.Create(modelMap);

                //Update Localized
                foreach (var localized in model.Locales)
                {
                    _localizedPropertyService.SaveLocalizedValue(modelMap, x => x.Title, localized.Title, localized.LanguageId);
                    _localizedPropertyService.SaveLocalizedValue(modelMap, x => x.ProductCode, localized.ProductCode, localized.LanguageId);
                    _localizedPropertyService.SaveLocalizedValue(modelMap, x => x.ShortDesc, localized.ShortDesc, localized.LanguageId);
                    _localizedPropertyService.SaveLocalizedValue(modelMap, x => x.Description, localized.Description, localized.LanguageId);
                    _localizedPropertyService.SaveLocalizedValue(modelMap, x => x.TechInfo, localized.TechInfo, localized.LanguageId);
                    _localizedPropertyService.SaveLocalizedValue(modelMap, x => x.SeoUrl, localized.SeoUrl, localized.LanguageId);
                    _localizedPropertyService.SaveLocalizedValue(modelMap, x => x.MetaTitle, localized.MetaTitle, localized.LanguageId);
                    _localizedPropertyService.SaveLocalizedValue(modelMap, x => x.MetaKeywords, localized.MetaKeywords, localized.LanguageId);
                    _localizedPropertyService.SaveLocalizedValue(modelMap, x => x.MetaDescription, localized.MetaDescription, localized.LanguageId);
                }

                Response.Cookies.Add(new HttpCookie("system_message", string.Format(MessageUI.CreateSuccess, FormUI.Post)));
                if (!Url.IsLocalUrl(returnUrl) || returnUrl.Length <= 1 || !returnUrl.StartsWith("/") || returnUrl.StartsWith("//") || returnUrl.StartsWith("/\\"))
                {
                    action = RedirectToAction("Index");
                }
                else
                {
                    action = Redirect(returnUrl);
                }
                //else
                //{
                //	base.ModelState.AddModelError("", "Mã sản phẩm đã tồn tại.");
                //	action = base.View(model);
                //}
            }
            catch (Exception ex)
            {
                ExtentionUtils.Log(string.Concat("Post.Create: ", ex.Message));
                ModelState.AddModelError("", ex.Message);

                return(View(model));
            }
            return(action);
        }