Пример #1
0
        public async Task <IActionResult> Add([FromForm] LinkViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            try
            {
                var lastLink = _dbContext.Links.OrderBy(f => f.Id).LastOrDefault();
                var link     = new Link()
                {
                    LongUrl     = model.LongUrl,
                    CreatedDate = DateTime.UtcNow,
                };

                if (lastLink != null)
                {
                    link.Id = lastLink.Id + new Random().Next(1, 100);
                }

                _dbContext.Links.Add(link);
                await _dbContext.SaveChangesAsync();

                link.ShortUrl = _urlShortener.Encode(link.Id);
                _dbContext.Update(link);
                await _dbContext.SaveChangesAsync();

                return(RedirectToAction(nameof(HomeController.Index), this.UrlName <HomeController>()));
            }
            catch
            {
                ModelState.AddModelError(string.Empty, "На сервере произошла ошибка, попробуйте позже");
                return(View(model));
            }
        }