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)));
        }
Exemple #2
0
        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));
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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)));
        }
Exemple #6
0
        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));
        }