public ActionResult Subscribe([FromBody] JwtWtihObject <string> subInfo)
        {
            JWT token;

            try
            {
                token = new JWT(subInfo.JWT);
            }
            catch (Exception ex)
            {
                _logger.LogError($"[POST]api/auth/subscribe" + ex.Message);
                return(BadRequest(ex.Message));
            }

            var userWhoSubscribe = _db.Users
                                   .FirstOrDefault(p => p.Id == token.PAYLOAD.Sub);

            if (userWhoSubscribe == null)
            {
                return(NotFound("No user that matches this JWT"));
            }

            var userToSubscribe = _db.Users
                                  .FirstOrDefault(p => p.Login == subInfo.WithJWTObject);

            if (userToSubscribe == null)
            {
                return(NotFound("No user that matches you entered login"));
            }
            if (userToSubscribe == userWhoSubscribe)
            {
                return(BadRequest("You can't subscribe on yourself"));
            }

            var subSub = new SubscriberSubscription
            {
                WhoSubscribeId    = userWhoSubscribe.Id,
                OnWhomSubscribeId = userToSubscribe.Id
            };

            _db.SubscriberSubscriptions.Add(subSub);
            _db.SaveChanges();


            _logger.LogInformation($"[POST]api/auth/subscribe;" +
                                   $"User [{userWhoSubscribe.Login}] subscribed to [{userToSubscribe.Id}]");
            return(Ok(subSub));
        }
示例#2
0
        public SubscriberMonitor(string subscriber,
                                 SubscriberSubscription subscription)
        {
            this.publisherName      = subscription.PublisherName;
            this.publicationName    = subscription.PublicationDBName;
            this.publicationDBName  = subscription.PublicationDBName;
            this.subscriptionDBName = subscription.SubscriptionDBName;
            this.subscriberName     = subscriber;

            // Initialize the form.
            InitializeComponent();

            // Add columns to the ListView.
            AddColumnsToListView();

            // If connection properties are passed, don't show the connection dialog
            // and hide the menus.
            //showDialog = false;

            foreach (ToolStripMenuItem menuItem in menuStrip2.Items)
            {
                menuItem.Visible = false;
            }
        }
示例#3
0
        public SubscriberMonitor(string subscriber,
            SubscriberSubscription subscription)
        {
            this.publisherName = subscription.PublisherName;
            this.publicationName = subscription.PublicationDBName;
            this.publicationDBName = subscription.PublicationDBName;
            this.subscriptionDBName = subscription.SubscriptionDBName;
            this.subscriberName = subscriber;

            // Initialize the form.
            InitializeComponent();

            // Add columns to the ListView.
            AddColumnsToListView();

            // If connection properties are passed, don't show the connection dialog
            // and hide the menus.
            //showDialog = false;

            foreach (ToolStripMenuItem menuItem in menuStrip2.Items)
            {
                menuItem.Visible = false;
            }
        }
示例#4
0
        private bool SynchronizeSubscription(SubscriberSubscription subscriptionparameters, string serverName)
        {
            bool             result = true;
            ServerConnection conn   = null;

            try
            {
                conn = new ServerConnection(serverName);
                // Connect to the Subscriber.
                conn.Connect();

                if (!conn.IsOpen)
                {
                    return(false);
                }

                // Define the pull subscription.
                MergePullSubscription subscription = new MergePullSubscription();
                subscription.ConnectionContext = conn;
                subscription.DatabaseName      = subscriptionparameters.SubscriptionDBName;
                subscription.PublisherName     = subscriptionparameters.PublisherName;
                subscription.PublicationDBName = subscriptionparameters.PublicationDBName;
                subscription.PublicationName   = subscriptionparameters.PublicationName;

                // If the pull subscription exists, then start the synchronization.
                if (subscription.LoadProperties())
                {
                    // Get the agent for the subscription.
                    MergeSynchronizationAgent agent = subscription.SynchronizationAgent;

                    agent.UseInteractiveResolver = true;
                    agent.InternetTimeout        = 600;
                    //if (File.Exists(@"c:\DotNet\tosi2010-09-01.zip"))
                    //{
                    //    DateTime dt = DateTime.Now;
                    //    agent.Output =
                    //        string.Format(@"c:\DotNet\out_{0}_{1}_{2}_{3}_{4}.txt", dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute);
                    //    agent.OutputVerboseLevel = 2;
                    //}

                    // Synchronously start the Merge Agent for the subscription.
                    agent.Status += OnAgentStatusEventHandler;
                    agent.Synchronize();

                    Info.ConflittiPub = agent.PublisherConflicts;
                    Info.ConflittiSub = agent.SubscriberConflicts;
                    Info.ModificheSub = agent.SubscriberChanges;
                    Info.ModifichePub = agent.PublisherChanges;

                    if (agent.PublisherConflicts > 0 || agent.SubscriberConflicts > 0)
                    {
                        Log("**************************************");
                        Log(string.Format("Conflitti: pub: {0}, sub: {1}",
                                          agent.PublisherConflicts,
                                          agent.SubscriberConflicts
                                          ));
                    }
                }
                else
                {
                    // Do something here if the pull subscription does not exist.
                    throw new ApplicationException(String.Format(
                                                       "La sottoscrizione '{0}' non esiste sul server {1}",
                                                       subscriptionparameters.PublicationName, conn.ServerInstance));
                }
            }
            catch (ComErrorException comErrorEx)
            {
                result = false;
                throw new ApplicationException(
                          "Impossibile connettersi al server di pubblicazione, " +
                          "verificare la connessione di rete e che la sottoscrizione " +
                          "sia stata creata correttamnte.", comErrorEx);
            }
            catch (Exception ex)
            {
                result = false;
                // Implement appropriate error handling here.
                throw new ApplicationException("The subscription could not be " +
                                               "synchronized. Verify that the subscription has " +
                                               "been defined correctly.", ex);
            }
            finally
            {
                if (conn != null)
                {
                    conn.Disconnect();
                }
            }

            Info.Result = result;
            return(result);
        }