Exemple #1
0
        public async Task <IActionResult> Post([FromBody] EventHookDTO eventHook)
        {
            try
            {
                long accountId = long.Parse(User.FindFirst("accountId").Value); // id подписки

                //получаем массив подписок для возможной ситуации что на 1 событие 1 аккаунт с разными url
                List <SubscriptionDTO> subscriptionsOnevents = SubscriptionService.GetSubscriptions(accountId, eventHook.Subscription.ExternalAccountId, eventHook.Subscription.EventId);
                // для каждой подписки добавляем событие
                foreach (var subscription in subscriptionsOnevents)
                {
                    EventHookDTO createHook = new EventHookDTO();
                    createHook.Subscription.EventId           = eventHook.Subscription.EventId;
                    createHook.Subscription.ExternalAccountId = eventHook.Subscription.ExternalAccountId;
                    createHook.Event          = eventHook.Event;
                    createHook.SubscriptionId = subscription.Id;   // добавили id
                    createHook.Validation();                       //проверили валидность данных
                    createHook.Subscription = null;
                    _ = EventHookService.AddEventHook(createHook); // попробовали добавить в базу в случае ошибки выкинет validationException
                }
                return(Ok());
            }
            catch (ValidationException ex)
            {
                return(StatusCode(412, new ProblemDetails()
                {
                    Status = 412,
                    Title = ex.Message,
                    Detail = string.Join(string.Empty, ex.Errors)
                })); // вернули 412 и ошибку
            }
            catch (NotExistsException ex)
            {
                return(StatusCode(200));
            }
            catch (Exception ex)
            {
                return(StatusCode(412,
                                  new ProblemDetails()
                {
                    Status = 412,
                    Title = ex.Message
                }));
            }
        }
Exemple #2
0
        public EventHookDTO AddEventHook(EventHookDTO eventHookDto)
        {
            try
            {
                eventHookDto.Status = "NEW";
                var eventHook = _mapper.Map <EventHookDTO, EventHook>(eventHookDto);
                eventHook.CreateTime = DateTime.UtcNow;
                eventHook.SendTime   = eventHook.CreateTime;
                EventHooks.Create(eventHook);
                EventHooks.Save();
                eventHookDto.Id = eventHook.Id;

                return(eventHookDto);
            }
            catch (ValidationException ex)
            {
                throw ex;
            }
        }