/// <summary> /// Schedule is added or edit. /// </summary> /// <param name="request"></param> /// <returns></returns> public GXScheduleUpdateResponse Post(GXScheduleUpdateRequest request) { List <GXEventsItem> events = new List <GXEventsItem>(); IAuthSession s = this.GetSession(false); long adderId = Convert.ToInt64(s.Id); lock (Db) { using (var trans = Db.OpenTransaction(IsolationLevel.ReadCommitted)) { //Add new schedules. foreach (GXAmiSchedule it in request.Schedules) { if (string.IsNullOrEmpty(it.Name)) { throw new ArgumentException("Invalid name."); } //If new schedule. if (it.Id == 0) { //All date times are saved to DB in universal time. it.Added = DateTime.Now.ToUniversalTime(); if (it.TransactionStartTime != null) { it.TransactionStartTime = it.TransactionStartTime.Value.ToUniversalTime(); } if (it.TransactionEndTime != null) { it.TransactionEndTime = it.TransactionEndTime.Value.ToUniversalTime(); } if (it.ScheduleStartTime != null) { it.ScheduleStartTime = it.ScheduleStartTime.Value.ToUniversalTime(); } if (it.ScheduleEndTime != null) { it.ScheduleEndTime = it.ScheduleEndTime.Value.ToUniversalTime(); } if (it.NextRunTine != null) { it.NextRunTine = it.NextRunTine.Value.ToUniversalTime(); } if (it.LastRunTime != null) { it.LastRunTime = it.LastRunTime.Value.ToUniversalTime(); } Db.Insert(it); #if !SS4 it.Id = (ulong)Db.GetLastInsertId(); #else it.Id = Db.LastInsertId(); #endif //Restore date times back to local time. it.Added = it.Added.ToLocalTime(); if (it.TransactionStartTime != null) { it.TransactionStartTime = it.TransactionStartTime.Value.ToLocalTime(); } if (it.TransactionEndTime != null) { it.TransactionEndTime = it.TransactionEndTime.Value.ToLocalTime(); } if (it.ScheduleStartTime != null) { it.ScheduleStartTime = it.ScheduleStartTime.Value.ToLocalTime(); } if (it.ScheduleEndTime != null) { it.ScheduleEndTime = it.ScheduleEndTime.Value.ToLocalTime(); } if (it.NextRunTine != null) { it.NextRunTine = it.NextRunTine.Value.ToLocalTime(); } if (it.LastRunTime != null) { it.LastRunTime = it.LastRunTime.Value.ToLocalTime(); } events.Add(new GXEventsItem(ActionTargets.Schedule, Actions.Add, it)); } else //Update schedule. { //Get Added time. #if !SS4 GXAmiSchedule orig = Db.GetById <GXAmiSchedule>(it.Id); #else GXAmiSchedule orig = Db.SingleById <GXAmiSchedule>(it.Id); #endif it.Added = orig.Added; it.TransactionStartTime = orig.TransactionStartTime; it.TransactionEndTime = orig.TransactionEndTime; it.ScheduleStartTime = orig.ScheduleStartTime; it.ScheduleEndTime = orig.ScheduleEndTime; it.NextRunTine = orig.NextRunTine; it.LastRunTime = orig.LastRunTime; Db.Update(it); events.Add(new GXEventsItem(ActionTargets.Schedule, Actions.Edit, it)); } //Delete all targets first. Db.Delete <GXAmiScheduleTarget>(q => q.ScheduleId == it.Id); //Add targets. foreach (GXAmiScheduleTarget t in it.Targets) { t.ScheduleId = it.Id; Db.Insert <GXAmiScheduleTarget>(t); } } trans.Commit(); } } AppHost host = this.ResolveService <AppHost>(); host.SetEvents(Db, this.Request, adderId, events); return(new GXScheduleUpdateResponse(request.Schedules)); }
/// <summary> /// Schedule is added or edit. /// </summary> /// <param name="request"></param> /// <returns></returns> public GXScheduleUpdateResponse Post(GXScheduleUpdateRequest request) { List<GXEventsItem> events = new List<GXEventsItem>(); IAuthSession s = this.GetSession(false); long adderId = Convert.ToInt64(s.Id); lock (Db) { using (var trans = Db.OpenTransaction(IsolationLevel.ReadCommitted)) { //Add new schedules. foreach (GXAmiSchedule it in request.Schedules) { if (string.IsNullOrEmpty(it.Name)) { throw new ArgumentException("Invalid name."); } //If new schedule. if (it.Id == 0) { //All date times are saved to DB in universal time. it.Added = DateTime.Now.ToUniversalTime(); if (it.TransactionStartTime != null) { it.TransactionStartTime = it.TransactionStartTime.Value.ToUniversalTime(); } if (it.TransactionEndTime != null) { it.TransactionEndTime = it.TransactionEndTime.Value.ToUniversalTime(); } if (it.ScheduleStartTime != null) { it.ScheduleStartTime = it.ScheduleStartTime.Value.ToUniversalTime(); } if (it.ScheduleEndTime != null) { it.ScheduleEndTime = it.ScheduleEndTime.Value.ToUniversalTime(); } if (it.NextRunTine != null) { it.NextRunTine = it.NextRunTine.Value.ToUniversalTime(); } if (it.LastRunTime != null) { it.LastRunTime = it.LastRunTime.Value.ToUniversalTime(); } Db.Insert(it); #if !SS4 it.Id = (ulong) Db.GetLastInsertId(); #else it.Id = Db.LastInsertId(); #endif //Restore date times back to local time. it.Added = it.Added.ToLocalTime(); if (it.TransactionStartTime != null) { it.TransactionStartTime = it.TransactionStartTime.Value.ToLocalTime(); } if (it.TransactionEndTime != null) { it.TransactionEndTime = it.TransactionEndTime.Value.ToLocalTime(); } if (it.ScheduleStartTime != null) { it.ScheduleStartTime = it.ScheduleStartTime.Value.ToLocalTime(); } if (it.ScheduleEndTime != null) { it.ScheduleEndTime = it.ScheduleEndTime.Value.ToLocalTime(); } if (it.NextRunTine != null) { it.NextRunTine = it.NextRunTine.Value.ToLocalTime(); } if (it.LastRunTime != null) { it.LastRunTime = it.LastRunTime.Value.ToLocalTime(); } events.Add(new GXEventsItem(ActionTargets.Schedule, Actions.Add, it)); } else //Update schedule. { //Get Added time. #if !SS4 GXAmiSchedule orig = Db.GetById<GXAmiSchedule>(it.Id); #else GXAmiSchedule orig = Db.SingleById<GXAmiSchedule>(it.Id); #endif it.Added = orig.Added; it.TransactionStartTime = orig.TransactionStartTime; it.TransactionEndTime = orig.TransactionEndTime; it.ScheduleStartTime = orig.ScheduleStartTime; it.ScheduleEndTime = orig.ScheduleEndTime; it.NextRunTine = orig.NextRunTine; it.LastRunTime = orig.LastRunTime; Db.Update(it); events.Add(new GXEventsItem(ActionTargets.Schedule, Actions.Edit, it)); } //Delete all targets first. Db.Delete<GXAmiScheduleTarget>(q => q.ScheduleId == it.Id); //Add targets. foreach (GXAmiScheduleTarget t in it.Targets) { t.ScheduleId = it.Id; Db.Insert<GXAmiScheduleTarget>(t); } } trans.Commit(); } } AppHost host = this.ResolveService<AppHost>(); host.SetEvents(Db, this.Request, adderId, events); return new GXScheduleUpdateResponse(request.Schedules); }