Exemplo n.º 1
0
        public ActionResult Add(string href, int countStep, double tact)
        {
            if (href == null)
            {
                return(UnprocessableEntity("Поле является обязательным"));
            }
            if (href.Length > 50)
            {
                return(UnprocessableEntity("Ссылка должна быть не больше 50 символов"));
            }
            if (countStep < 1)
            {
                return(UnprocessableEntity("Количество шагов должно быть больше 1"));
            }
            if (tact < 0)
            {
                return(UnprocessableEntity("Такт должен быть неотрицательным"));
            }

            try
            {
                new Uri($"http://{href}");
            }
            catch (UriFormatException e)
            {
                return(UnprocessableEntity(e.Message));
            }

            using var uow = _unitOfWorkFactory.GetUoW();
            var link = new Link
            {
                Href       = href,
                CountStep  = countStep,
                Tact       = tact,
                LinkStatus = LinkStatus.Waiting
            };

            _linkRepository.Add(link);
            uow.Commit();

            var linkEvent = new LinkEvent {
                Id = link.Id, Href = link.Href
            };
            var successfullySent = _rabbitMqService.SendLinkEvent(linkEvent);

            link.LinkStatus = successfullySent ? LinkStatus.Queue : LinkStatus.Waiting;
            uow.Commit();

            return(RedirectToAction("Index"));
        }