public async Task <IActionResult> Edit(int id, AdvertisementUsableViewModel model)
        {
            var creatorUserName = await this.advertisement.CreatorUserName(id);

            var currentUserName = this.User.Identity.Name;

            if (creatorUserName != currentUserName)
            {
                TempData.AddErrorMessage(WebConstants.ErrorMessageNotAllowedToPage);
                return(RedirectToAction(nameof(All)));
            }

            if (!ModelState.IsValid)
            {
                model.Categories = this.category
                                   .All()
                                   .Select(c => new SelectListItem
                {
                    Text  = c.Name,
                    Value = c.Id.ToString()
                });
                return(View(model));
            }

            await this.advertisement.Edit(
                id,
                model.Advertisements.Name,
                model.Advertisements.Description,
                model.Advertisements.Price,
                model.Advertisements.CategoryId);

            TempData.AddSuccessMessage(string.Format(WebConstants.SuccessMessageAdvertisementEditPlaceholder, model.Advertisements.Name));
            return(RedirectToAction(nameof(Details), new { id = id }));
        }
        public async Task <IActionResult> Edit(int id)
        {
            var creatorUserName = await this.advertisement.CreatorUserName(id);

            var currentUserName = this.User.Identity.Name;

            if (creatorUserName != currentUserName)
            {
                TempData.AddErrorMessage(WebConstants.ErrorMessageNotAllowedToPage);
                return(RedirectToAction(nameof(All)));
            }

            var exists = await this.advertisement.Exists(id);

            if (!exists)
            {
                TempData.AddErrorMessage(WebConstants.ErrorMessageAdvertisementDontExist);
                return(RedirectToAction(nameof(All)));
            }

            var model = new AdvertisementUsableViewModel
            {
                Advertisements = await this.advertisement.ById(id),
                Categories     = this.category
                                 .All()
                                 .Select(c => new SelectListItem
                {
                    Text  = c.Name,
                    Value = c.Id.ToString()
                })
            };

            return(View(model));
        }