Esempio n. 1
0
        /// <summary>
        /// Create a new <see cref="Altask.www.Models.TaskInstance"/> from a <see cref="Altask.Data.Dto.Schedule"/>.
        /// </summary>
        /// <param name="task"></param>
        /// <param name="date"></param>
        /// <param name="schedule"></param>
        /// <returns></returns>
        public static TaskInstance FromSchedule(Data.Dto.Task task, DateTime date, Data.Dto.Schedule schedule)
        {
            var instance = TaskInstance.Create(task, null, null, date);

            instance.AnyTime = schedule.AnyTime.GetValueOrDefault(false);

            if (!instance.AnyTime && schedule.AsEarlyAsN.HasValue)
            {
                switch (schedule.AsEarlyAsFrequency)
                {
                case "Minute(s)":
                    instance.AsEarlyAsDate = date.AddMinutes(-(double)schedule.AsEarlyAsN);
                    break;

                case "Hour(s)":
                    instance.AsEarlyAsDate = date.AddHours(-(double)schedule.AsEarlyAsN);
                    break;

                case "Day(s)":
                    instance.AsEarlyAsDate = date.AddDays(-(double)schedule.AsEarlyAsN);
                    break;

                case "Week(s)":
                    instance.AsEarlyAsDate = date.AddDays(-(double)(schedule.AsEarlyAsN * 7));
                    break;

                case "Month(s)":
                    instance.AsEarlyAsDate = date.AddMonths(-schedule.AsEarlyAsN.Value);
                    break;
                }
            }

            instance.ScheduleId = schedule.Id;
            return(instance);
        }
Esempio n. 2
0
        /// <summary>
        /// Returns a collection of projected run dates for the <see cref="Altask.Data.Model.Schedule"/>.
        /// </summary>
        /// <param name="schedule">The <see cref="Altask.Data.Model.Schedule"/>.</param>
        /// <param name="count">The number of dates within the constrains of the <see cref="Altask.Data.Model.Schedule"/> objects parameters to calculate out to.</param>
        /// <returns>Returns a <see cref="Altask.Data.EntityResult"/> indicating success or failure.</returns>
        public virtual async Task <ActionResult> GetRunDates(Data.Dto.Schedule schedule, DateTime from, DateTime to)
        {
            from = from.LessSeconds();
            to   = to.LessSeconds();
            ThrowIfDisposed();
            var dates = new List <DateTime>();

            try {
                dates = schedule.GetRunDates(from, to);
            }
            catch (Exception ex) {
                return(BadRequest(ErrorDescriber.DefaultError(ex.Message)));
            }

            return(await System.Threading.Tasks.Task.FromResult(Ok(new { dates = dates })));
        }
Esempio n. 3
0
        internal override void BeforeCreate(Data.Model.Schedule entity, Data.Dto.Schedule dto)
        {
            ThrowIfDisposed();
            entity.StartsOn = entity.StartsOn.LessSeconds();

            foreach (var item in dto.Assets)
            {
                entity.Assets.Add(new Data.Model.ScheduleAsset()
                {
                    AssetId             = item.AssetId,
                    ScheduleAssetTypeId = item.ScheduleAssetTypeId
                });
            }

            foreach (var item in dto.Users)
            {
                entity.Users.Add(new Data.Model.ScheduleUser()
                {
                    UserId             = item.UserId,
                    ScheduleUserTypeId = item.ScheduleUserTypeId
                });
            }
        }
Esempio n. 4
0
        internal override void BeforeUpdate(Data.Model.Schedule entity, Data.Dto.Schedule dto)
        {
            ThrowIfDisposed();
            entity.StartsOn = entity.StartsOn.LessSeconds();

            var currentAssets = entity.Assets.ToList();

            for (var index = currentAssets.Count - 1; index >= 0; index--)
            {
                var asset = currentAssets[index];

                if (!dto.Assets.Any(tda => tda.AssetId == asset.AssetId))
                {
                    Context.ScheduleAssets.Remove(asset);
                }
            }

            foreach (var asset in dto.Assets)
            {
                var existingAsset = Context.Assets.FirstOrDefault(a => a.Id == asset.AssetId);

                if (existingAsset != null)
                {
                    if (!entity.Assets.Any(tda => tda.AssetId == asset.AssetId))
                    {
                        entity.Assets.Add(new Data.Model.ScheduleAsset()
                        {
                            AssetId             = asset.AssetId,
                            ScheduleAssetTypeId = asset.ScheduleAssetTypeId
                        });
                    }
                }
            }

            var currentUsers = entity.Users.ToList();

            for (var index = currentUsers.Count - 1; index >= 0; index--)
            {
                var user = currentUsers[index];

                if (!dto.Users.Any(tdu => tdu.UserId == user.UserId))
                {
                    Context.ScheduleUsers.Remove(user);
                }
            }

            foreach (var user in dto.Users)
            {
                var existingUser = Context.Users.FirstOrDefault(a => a.Id == user.UserId);

                if (existingUser != null)
                {
                    if (!entity.Users.Any(tdu => tdu.UserId == user.UserId))
                    {
                        entity.Users.Add(new Data.Model.ScheduleUser()
                        {
                            UserId             = user.UserId,
                            ScheduleUserTypeId = user.ScheduleUserTypeId
                        });
                    }
                }
            }
        }