Ejemplo n.º 1
0
        /// <summary>
        /// Get schedules.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public GXScheduleResponse Post(GXScheduleRequest request)
        {
            List <GXAmiSchedule> list = null;
            IAuthSession         s    = this.GetSession(false);
            bool superAdmin           = GuruxAMI.Server.GXBasicAuthProvider.IsSuperAdmin(s);

            lock (Db)
            {
                //Returns the schedules that users can handle.
                if (request.UserIDs != null && request.UserIDs.Length != 0)
                {
                    //TODO:
                }
                //Returns the schedules that user groups can handle.
                else if (request.UserGroupIDs != null && request.UserGroupIDs.Length != 0)
                {
                    //TODO:
                }
                else//Get all schedules that use can access.
                {
                    //Return all schedules.
                    if (superAdmin)
                    {
                        list = Db.Select <GXAmiSchedule>();
                    }
                    else//Return only shedule that target devices user can access.
                    {
                        //TODO:
                        list = Db.Select <GXAmiSchedule>();
                    }
                }

                //Remove excluded schedules.
                if (request.Excluded != null && request.Excluded.Length != 0)
                {
                    List <ulong> ids = new List <ulong>(request.Excluded);
                    var          excludeSchedules = from c in list where !ids.Contains(c.Id) select c;
                    list = excludeSchedules.ToList();
                }
                //Get schedules by range.
                if (request.Index != 0 || request.Count != 0)
                {
                    if (request.Count == 0 || request.Index + request.Count > list.Count)
                    {
                        request.Count = list.Count - request.Index;
                    }
                    list.RemoveRange(0, request.Index);
                    var limitschedules = list.Take(request.Count);
                    list = limitschedules.ToList();
                }
            }
            foreach (GXAmiSchedule it in list)
            {
                if (it.TransactionStartTime != null)
                {
                    it.TransactionStartTime = DateTime.SpecifyKind(it.TransactionStartTime.Value, DateTimeKind.Utc);
                }
                if (it.TransactionEndTime != null)
                {
                    it.TransactionEndTime = DateTime.SpecifyKind(it.TransactionEndTime.Value, DateTimeKind.Utc);
                }
                if (it.ScheduleStartTime != null)
                {
                    it.ScheduleStartTime = DateTime.SpecifyKind(it.ScheduleStartTime.Value, DateTimeKind.Utc);
                }
                if (it.ScheduleEndTime != null)
                {
                    it.ScheduleEndTime = DateTime.SpecifyKind(it.ScheduleEndTime.Value, DateTimeKind.Utc);
                }
                if (it.NextRunTine != null)
                {
                    it.NextRunTine = DateTime.SpecifyKind(it.NextRunTine.Value, DateTimeKind.Utc);
                }
                if (it.LastRunTime != null)
                {
                    it.LastRunTime = DateTime.SpecifyKind(it.LastRunTime.Value, DateTimeKind.Utc);
                }
                //Get targets.
                it.Targets = Db.Select <GXAmiScheduleTarget>(q => q.ScheduleId == it.Id).ToArray();
            }
            return(new GXScheduleResponse(list.ToArray()));
        }
        /// <summary>
        /// Get schedules.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
		public GXScheduleResponse Post(GXScheduleRequest request)
		{
            List<GXAmiSchedule> list = null;
            IAuthSession s = this.GetSession(false);            
            bool superAdmin = GuruxAMI.Server.GXBasicAuthProvider.IsSuperAdmin(s);
            lock (Db)
            {                
                //Returns the schedules that users can handle.
                if (request.UserIDs != null && request.UserIDs.Length != 0)
                {
                    //TODO:
                }
                //Returns the schedules that user groups can handle.
                else if (request.UserGroupIDs != null && request.UserGroupIDs.Length != 0)
                {
                    //TODO:
                }
                else//Get all schedules that use can access.
                {
                    //Return all schedules.
                    if (superAdmin)
                    {
                        list = Db.Select<GXAmiSchedule>();
                    }
                    else//Return only shedule that target devices user can access.
                    {
                        //TODO:
                        list = Db.Select<GXAmiSchedule>();
                    }
                }

                //Remove excluded schedules.
                if (request.Excluded != null && request.Excluded.Length != 0)
                {                    
                    List<ulong> ids = new List<ulong>(request.Excluded);
                    var excludeSchedules = from c in list where !ids.Contains(c.Id) select c;
                    list = excludeSchedules.ToList();                 
                }
                //Get schedules by range.
                if (request.Index != 0 || request.Count != 0)
                {
                    if (request.Count == 0 || request.Index + request.Count > list.Count)
                    {
                        request.Count = list.Count - request.Index;
                    }
                    list.RemoveRange(0, request.Index);
                    var limitschedules = list.Take(request.Count);
                    list = limitschedules.ToList();
                }                
            }
            foreach(GXAmiSchedule it in list)
            {                
                if (it.TransactionStartTime != null)
                {
                    it.TransactionStartTime = DateTime.SpecifyKind(it.TransactionStartTime.Value, DateTimeKind.Utc);
                }                
                if (it.TransactionEndTime != null)
                {
                    it.TransactionEndTime = DateTime.SpecifyKind(it.TransactionEndTime.Value, DateTimeKind.Utc);
                }
                if (it.ScheduleStartTime != null)
                {
                    it.ScheduleStartTime = DateTime.SpecifyKind(it.ScheduleStartTime.Value, DateTimeKind.Utc);
                }
                if (it.ScheduleEndTime != null)
                {
                    it.ScheduleEndTime = DateTime.SpecifyKind(it.ScheduleEndTime.Value, DateTimeKind.Utc);
                }
                if (it.NextRunTine != null)
                {
                    it.NextRunTine = DateTime.SpecifyKind(it.NextRunTine.Value, DateTimeKind.Utc);
                }
                if (it.LastRunTime != null)
                {
                    it.LastRunTime = DateTime.SpecifyKind(it.LastRunTime.Value, DateTimeKind.Utc);
                }
                //Get targets.
                it.Targets = Db.Select<GXAmiScheduleTarget>(q => q.ScheduleId == it.Id).ToArray();
            }
            return new GXScheduleResponse(list.ToArray());
		}