Ejemplo n.º 1
0
        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));
            }
        }