private NewsItemViewModel GenerateViewModel(NewsItem item)
        {
            var model = new NewsItemViewModel
            {
                NewsItem = item
            };

            return model;
        }
        public async Task<ActionResult> Create(NewsItemViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (model.HeaderImageUpload != null)
                {
                    var fileName = Guid.NewGuid().ToString();
                    var path = Server.MapPath("~/Public/News/");

                    FileUploadHelper.GenerateVersions(model.HeaderImageUpload.InputStream, path + fileName);

                    model.NewsItem.HeaderImage = fileName;
                }

                db.Add(model.NewsItem);
                await db.SaveChangesAsync();
                return RedirectToAction("Index");
            }

            return View(GenerateViewModel(model.NewsItem));
        }
        public async Task<ActionResult> Edit(NewsItemViewModel model)
        {
            if (ModelState.IsValid)
            {
                db.Update(model.NewsItem);

                if (model.HeaderImageUpload != null)
                {
                    var fileName =
                        db.GetValueFromDb(model.NewsItem, i => i.HeaderImage) ??
                        Guid.NewGuid().ToString();

                    var path = Server.MapPath("~/Public/News/");
                    Directory.CreateDirectory(path);

                    FileUploadHelper.GenerateVersions(model.HeaderImageUpload.InputStream, path + fileName);

                    model.NewsItem.HeaderImage = fileName;
                }
                else
                {
                    db.ExcludeFromUpdate(model.NewsItem, i => new { i.HeaderImage });
                }

                foreach (var t in model.NewsItem.Translations)
                {
                    db.UpdateTranslation(t);
                }

                await db.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            return View(GenerateViewModel(model.NewsItem));
        }