public bool DissociateProjectSubscription(DissociateProjectSubscriptionEvent dissociateSubscription) { var toBeDissociated = GetExistingProjectSubscription(dissociateSubscription.SubscriptionUID); if (toBeDissociated == null) { throw new Exception("Invalid ProjectSubscriptionUID"); } toBeDissociated.fk_ProjectUID = null; toBeDissociated.UpdateUTC = DateTime.UtcNow; var kafkaMessage = new KafkaMessage() { Key = dissociateSubscription.SubscriptionUID.ToString(), Message = new { DissociateProjectSubscriptionEvent = dissociateSubscription } }; var actions = new List <Action>(); actions.Add(() => transaction.Upsert(toBeDissociated)); actions.Add(() => topics.ToList().ForEach(topic => { kafkaMessage.Topic = topic; transaction.Publish(kafkaMessage); })); return(transaction.Execute(actions)); }
public ActionResult DissociateProjectSubscription( [FromBody] DissociateProjectSubscriptionEvent dissociateProjectSubscription) { try { dissociateProjectSubscription.EffectiveDate = dissociateProjectSubscription.EffectiveDate.ToMySqlDateTimeOverflowCorrection(); dissociateProjectSubscription.ReceivedUTC = DateTime.UtcNow; if (subscriptionService.DissociateProjectSubscription(dissociateProjectSubscription)) { 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 ProjectSubscriptionUID")) { logger.LogInformation("Invalid ProjectSubscriptionUID"); return(BadRequest("Invalid ProjectSubscriptionUID")); } logger.LogError(ex.Message + ex.StackTrace); return(StatusCode(500)); } }