예제 #1
0
        /// <summary>
        /// Stop listen events.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public GXEventsUnregisterResponse Put(GXEventsUnregisterRequest request)
        {
            if (request.Instance.Equals(Guid.Empty))
            {
                throw new Exception("Guid is empty.");
            }
            Guid         guid = Guid.Empty;
            IAuthSession s    = this.GetSession(false);
            long         id;

            if (!long.TryParse(s.Id, out id))
            {
                if (!GXBasicAuthProvider.IsGuid(s.UserAuthName, out guid))
                {
                    throw new ArgumentException("Access denied.");
                }
            }
            AppHost host = this.ResolveService <AppHost>();

            host.RemoveEvent(request.Instance, request.DataCollectorGuid);
            if (guid != Guid.Empty)
            {
                //Notify that DC is disconnected.
                List <GXEventsItem> events = new List <GXEventsItem>();
                lock (Db)
                {
                    GXAmiDataCollector dc = Db.Select <GXAmiDataCollector>(q => q.Guid == guid)[0];
                    dc.State = Gurux.Device.DeviceStates.None;
                    Db.UpdateOnly(dc, p => p.StatesAsInt, p => p.Id == dc.Id);
                    events.Add(new GXEventsItem(ActionTargets.DataCollector, Actions.State, dc));
                }
                host.SetEvents(Db, this.Request, 0, events);
            }
            return(new GXEventsUnregisterResponse());
        }
예제 #2
0
        /// <summary>
        /// Drop tables.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public GXDropTablesResponse Post(GXDropTablesRequest request)
        {
            IAuthSession s = this.GetSession(false);

            if (!GXBasicAuthProvider.IsSuperAdmin(s))
            {
                throw new Exception("Database drop failed. Only super admin can drop database.");
            }
            lock (Db)
            {
                DropTables(Db);
                return(new GXDropTablesResponse());
            }
        }