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 })); } }
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; } }