public async Task <Guid> ChangeDayAssignDate(INewDayAssignModel model)
        {
            var year = model.Year != default(int) ? model.Year : DateTime.UtcNow.Year;

            if (model.WeekDay.HasValue)
            {
                model.Date = CalendarHelper.GetDateByWeekAndDayNumber(year, model.WeekNumber, model.WeekDay.Value);
            }

            var dayAssign = model.DayAssignId.HasValue ? dayAssignProvider.Get(model.DayAssignId.Value) : null;

            if (dayAssign == null)
            {
                return(await CreateDayAssign(model));
            }
            else
            {
                model.Id = model.DayAssignId.Value;
                await messageBus.Publish(model.Map <ChangeDayAssignDateCommand>());

                if (dayAssign.StatusId == JobStatus.Expired)
                {
                    await jobStatusService.Pending(dayAssign.Id, dayAssign.StatusId);
                }

                return(model.DayAssignId.Value);
            }
        }
Beispiel #2
0
        public async Task ChangeTaskDate(string jobId, Guid dayAssignId, DateTime date)
        {
            JobAssign  jobAssign      = jobAssignProvider.GetByJobId(jobId);
            IDayAssign dayAssign      = dayAssignService.GetDayAssignById(dayAssignId);
            WeekModel  weekModel      = jobAssign.WeekList.First();
            int        weekDay        = date.GetWeekDayNumber();
            int        weekNumber     = date.GetWeekNumber();
            var        dayPerWeekList = new List <DayPerWeekModel> {
                new DayPerWeekModel {
                    Id = Guid.NewGuid(), WeekDay = weekDay
                }
            };
            var weekList = new List <WeekModel> {
                new WeekModel {
                    Number = weekNumber, IsDisabled = false, ChangedBy = weekModel.ChangedBy
                }
            };

            await messageBus.Publish(new ChangeJobAssignWeeksCommand(jobAssign.Id, weekList, (ChangedByRole)weekModel.ChangedBy, false));

            await messageBus.Publish(new SaveDaysPerWeekCommand(jobAssign.Id, dayPerWeekList));

            await messageBus.Publish(new ChangeOperationalTaskDateCommand(dayAssignId, date, weekDay));

            if (dayAssign.StatusId == JobStatus.Expired)
            {
                await jobStatusService.Pending(dayAssign.Id, dayAssign.StatusId);
            }
        }