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