// GET: BackOffice/Authors/Create
        public ActionResult Create()
        {
            var author = new Author();

            author.Translations.Add(new AuthorTranslation
                {
                    LanguageCode = LanguageDefinitions.DefaultLanguage
                });

            var model = new AuthorEditViewModel
            {
                Author = author
            };

            return View(model);
        }
        public async Task<ActionResult> Create(AuthorEditViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (model.ImageUpload != null)
                {
                    var newName = Guid.NewGuid().ToString() + ".jpg";

                    FileUploadHelper.SaveImage(model.ImageUpload.InputStream,
                        400, 400,
                        Server.MapPath("~/Public/Authors/") + newName,
                        FitMode.Crop);

                    model.Author.PictureFileName = newName;
                }

                db.Add(model.Author);
                await db.SaveChangesAsync();

                return RedirectToAction("Index");
            }

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

                if (model.ImageUpload != null)
                {
                    var logo = db.GetValueFromDb(model.Author, c => c.PictureFileName);

                    if (logo == null)
                    {
                        model.Author.PictureFileName =
                            Guid.NewGuid().ToString() + ".jpg";

                        logo = model.Author.PictureFileName;
                    }

                    FileUploadHelper.SaveImage(model.ImageUpload.InputStream,
                        400, 400,
                        Server.MapPath("~/Public/Authors/") + logo,
                        FitMode.Crop);
                }
                else
                {
                    db.ExcludeFromUpdate(model.Author, c => new { c.PictureFileName });
                }



                // Update each translation.
                foreach (var t in model.Author.Translations)
                {
                    db.UpdateTranslation(t);
                }

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

            return View(model);
        }