/// <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()); }