public IActionResult PostCreate([FromForm] CreateLinkViewModel vm) { if (!ModelState.IsValid) { return(RedirectToAction(nameof(Create))); } if (!vm.Password.Equals(AdminPassword)) { return(RedirectToAction(nameof(Create))); } try { using var db = new LiteDatabase("persistence/linkshortener.db"); var col = db.GetCollection <LinkModel>("links"); var newIdInt = col.Insert(new LinkModel { RedirectTargetUrl = vm.NewLink }); var newIdHashed = _hashId.Encode(newIdInt); var vm2 = new CreatedLinkViewModel { NewLink = vm.NewLink, LinkHash = $"{UrlPrefix}/{newIdHashed}" }; return(View(vm2)); } catch (Exception ex) { _logger.LogError("Error while DB insert", ex); } return(RedirectToAction(nameof(Create))); }
public async Task <IActionResult> Index() { var vm = new CreateLinkViewModel(); await InitializeViewModel(vm); return(View(vm)); }
public IActionResult Create() { var vm = new CreateLinkViewModel { NewLink = string.Empty, Password = string.Empty }; return(View(vm)); }
private async Task InitializeViewModel(CreateLinkViewModel vm) { var tags = await Gateway.SendAsync(new GetTagsRequest() { }); vm.Tags = tags.Select(m => { var t = m.ConvertTo <TagViewModel>(); t.IsSelected = vm.Tags?.FirstOrDefault(r => r.Key == m.Key)?.IsSelected ?? false; return(t); }).ToList(); }
public async Task <IActionResult> Index(CreateLinkViewModel vm) { await InitializeViewModel(vm); return(DoIfValid <IActionResult>(() => { var req = vm.ConvertTo <CreateLinkRequest>(); req.Tags = Enumerable.ToHashSet(vm.Tags.Where(m => m.IsSelected).Select(m => m.Key)); var link = Gateway.Send(req); return RedirectToAction("Share", "Link", new { id = link.Key }); }, () => View(vm))); }
public IActionResult Shortener(CreateLinkViewModel model) { if (!ModelState.IsValid) { return(JsonFail($"متاسفانه لینک برای کوتاه سازی یافت نشد ...!")); } CreateLinkDto createLinkDto = new CreateLinkDto(model.FullAddress); var result = linkService.AddLink(createLinkDto); if (result.IsSuccess) { return(JsonSuccess(message: result.Message)); } return(JsonFail(message: result.Message)); }