Exemple #1
0
        /// <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);
		}