public virtual ActionResult Create(UrlCreateViewModel model) { try { using (var session = _documentStore.OpenSession()) { // Does a shortened url already exist with the specified key? //var results = from urls in session.Query<UrlModel>() // where urls.Key == urlModel.Key // select urls; var results = session.Query <ShortLink>().Where(url => url.Key == model.Key); var existingUrlModel = results.FirstOrDefault(); if (existingUrlModel != null) { // TODO: Error page and try again. return(View()); } var shortLink = Mapper.Map <ShortLink>(model); shortLink.Created = DateTimeOffset.UtcNow; session.Store(shortLink); session.SaveChanges(); } return(RedirectToAction(Actions.Index())); } catch { return(View()); } }
public async Task <IActionResult> Index([Bind("TargetUrl,Name")] UrlCreateViewModel urlVM) { var createdName = urlVM.Name ?? Helper.GenerateRandomUrlName(); if (await _context.Urls.AnyAsync(u => u.Name == createdName)) { ModelState.AddModelError("", $"{createdName} name is already taken. Try different one."); return(View()); } Url url = new Url { Name = createdName, TargetUrl = urlVM.TargetUrl, User = await _userManager.GetUserAsync(User) }; try { if (ModelState.IsValid) { // domain blocked validation placed here, cause urlVM.TargetUrl can't be null // in order to use Helper.GetUrlDomain (ModelState.IsValid has to be true) string domain = Helper.GetUrlDomain(urlVM.TargetUrl); if ((await _context.BlockedDomains.FirstOrDefaultAsync(d => d.Address == domain)) != null) { ModelState.AddModelError("", $"{domain} domain has been BLOCKED."); return(View()); } _context.Add(url); await _context.SaveChangesAsync(); TempData["shortenedUrl"] = createdName; return(RedirectToAction(nameof(Index))); } } catch (DbUpdateException) { ModelState.AddModelError("", "Jakis przypal z baza :/"); } return(View()); }
public async Task <KeyValuePair <string, string> > Post([FromBody] UrlCreateViewModel url) { var ret = await _tableContext.CreateUrl(url.Value); return(new KeyValuePair <string, string>(ret, url.Value)); }