Exemple #1
0
        public ActionResult CreateCustomerSubscription([FromBody] CreateCustomerSubscriptionEvent customerSubscription)
        {
            try
            {
                if (subscriptionService.CheckExistingSubscription(customerSubscription.SubscriptionUID.Value,
                                                                  "CustomerSubscriptionEvent"))
                {
                    logger.LogInformation("Customer Subscription already exists!");
                    return(BadRequest("Customer Subscription already exists!"));
                }

                customerSubscription.StartDate   = customerSubscription.StartDate.ToMySqlDateTimeOverflowCorrection();
                customerSubscription.EndDate     = customerSubscription.EndDate.ToMySqlDateTimeOverflowCorrection();
                customerSubscription.ReceivedUTC = DateTime.UtcNow;

                if (subscriptionService.CreateCustomerSubscription(customerSubscription))
                {
                    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 Customer Subscription Type"))
                {
                    logger.LogInformation("Invalid Customer Subscription Type");
                    return(BadRequest("Invalid Customer Subscription Type"));
                }

                logger.LogError(ex.Message + ex.StackTrace);
                return(StatusCode(500));
            }
        }
Exemple #2
0
        public bool CreateCustomerSubscription(CreateCustomerSubscriptionEvent createSubscription)
        {
            if (createSubscription.SubscriptionType == null ||
                !_customerSubscriptionTypeCache.ContainsKey(createSubscription.SubscriptionType))
            {
                throw new Exception("Invalid Customer Subscription Type");
            }

            var currentUtc   = DateTime.UtcNow;
            var subscription = new DbCustomerSubscription()
            {
                CustomerSubscriptionUID = createSubscription.SubscriptionUID.Value,
                fk_CustomerUID          = createSubscription.CustomerUID.Value,
                fk_ServiceTypeID        = _customerSubscriptionTypeCache[createSubscription.SubscriptionType],
                StartDate = createSubscription.StartDate.Value,
                EndDate   = createSubscription.EndDate.Value,
                InsertUTC = currentUtc,
                UpdateUTC = currentUtc
            };

            var kafkaMessage = new KafkaMessage()
            {
                Key     = createSubscription.SubscriptionUID.ToString(),
                Message = new { CreateCustomerSubscriptionEvent = 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));
        }