public bool CreateProjectSubscription(CreateProjectSubscriptionEvent createSubscription) { if (createSubscription.SubscriptionType == null || !_projectSubscriptionTypeCache.ContainsKey(createSubscription.SubscriptionType)) { throw new Exception("Invalid Project Subscription Type"); } var currentUtc = DateTime.UtcNow; var subscription = new DbProjectSubscription() { ProjectSubscriptionUID = createSubscription.SubscriptionUID.Value, fk_ProjectUID = null, StartDate = createSubscription.StartDate.Value, EndDate = createSubscription.EndDate.Value, fk_CustomerUID = createSubscription.CustomerUID.Value, fk_ServiceTypeID = _projectSubscriptionTypeCache[createSubscription.SubscriptionType], InsertUTC = currentUtc, UpdateUTC = currentUtc }; var kafkaMessage = new KafkaMessage() { Key = createSubscription.SubscriptionUID.ToString(), Message = new { CreateProjectSubscriptionEvent = createSubscription } }; var actions = new List <Action>(); actions.Add(() => transaction.Upsert(subscription)); actions.Add(() => topics.ToList().ForEach(topic => { kafkaMessage.Topic = topic; transaction.Publish(kafkaMessage); })); return(transaction.Execute(actions)); }
public ActionResult CreateProjectSubscription([FromBody] CreateProjectSubscriptionEvent projectSubscription) { try { if (subscriptionService.CheckExistingSubscription(projectSubscription.SubscriptionUID.Value, "ProjectSubscriptionEvent")) { logger.LogInformation("Project Subscription already exists!"); return(BadRequest("Project Subscription already exists!")); } projectSubscription.StartDate = projectSubscription.StartDate.ToMySqlDateTimeOverflowCorrection(); projectSubscription.EndDate = projectSubscription.EndDate.ToMySqlDateTimeOverflowCorrection(); projectSubscription.ReceivedUTC = DateTime.UtcNow; if (subscriptionService.CreateProjectSubscription(projectSubscription)) { return(Ok()); } logger.LogInformation("Unable to save to db. Make sure request is not duplicated and all keys exist"); return(BadRequest("Unable to save to db. Make sure request is not duplicated and all keys exist")); } catch (Exception ex) { if (ex.Message.Contains("Invalid Project Subscription Type")) { logger.LogInformation("Invalid Project Subscription Type"); return(BadRequest("Invalid Project Subscription Type")); } logger.LogError(ex.Message + ex.StackTrace); return(StatusCode(500)); } }