public ActionResult CreateAssetSubscription([FromBody] CreateAssetSubscriptionEvent assetSubscription) { try { if (string.IsNullOrEmpty(assetSubscription.Source)) { assetSubscription.Source = SubscriptionSource.Store.ToString(); } if (!Enum.TryParse(assetSubscription.Source, true, out SubscriptionSource _)) { logger.LogInformation($"Invalid Source Value:{assetSubscription.Source}"); return(BadRequest("Invalid Source Value")); } if (subscriptionService.CheckExistingSubscription(assetSubscription.SubscriptionUID.Value, "AssetSubscriptionEvent")) { logger.LogInformation("Asset Subscription already exists!"); return(BadRequest("Asset Subscription already exists!")); } assetSubscription.StartDate = assetSubscription.StartDate.ToMySqlDateTimeOverflowCorrection(); assetSubscription.EndDate = assetSubscription.EndDate.ToMySqlDateTimeOverflowCorrection(); assetSubscription.ReceivedUTC = DateTime.UtcNow; if (subscriptionService.CreateAssetSubscription(assetSubscription)) { return(Ok()); } logger.LogWarning("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 Asset Subscription Type")) { logger.LogWarning("Invalid Asset Subscription Type"); return(BadRequest("Invalid Asset Subscription Type")); } logger.LogError(ex.Message + ex.StackTrace); return(StatusCode(500)); } }