public async Task <IActionResult> PutScheduleTraining(int id, ScheduleTraining scheduleTraining)
        {
            var email = GetEmail();

            scheduleTraining.UserEmail = email;
            if (id != scheduleTraining.ScheduleTrainingId)
            {
                return(BadRequest());
            }

            _context.Entry(scheduleTraining).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ScheduleTrainingExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <ActionResult <ScheduleTraining> > PostScheduleTraining(ScheduleTraining model)
        {
            var email            = GetEmail();
            var scheduleTraining = await NewScheduleTraining(model.TrainingId, model.TrainingDate, email);

            var trainingExercises = await trainingRepository.GetExercisesTrainingsAsync(model.TrainingId, email);

            if (trainingExercises == null)
            {
                return(Ok());
            }
            foreach (var trainingExercise in trainingExercises)
            {
                var scheduleExercise = await NewScheduleExercise(email, scheduleTraining, trainingExercise);

                var series = await seriesRespository.GetSeriesForExerciseAsync(trainingExercise.ExerciseId, email);

                if (series == null)
                {
                    continue;
                }
                foreach (var s in series)
                {
                    await NewSeries(email, scheduleExercise, s);
                }
            }

            return(CreatedAtAction("GetScheduleTraining", new { id = scheduleTraining.ScheduleTrainingId }, scheduleTraining));
        }
Пример #3
0
        public async Task Handle(ScheduleTraining message, IMessageHandlerContext context)
        {
            log.Info($"Received ScheduleTraining, TrainingId = {message.TrainingId}");
            Data.TrainingId = message.TrainingId;

            log.Info($"Starting cool down period for training #{Data.TrainingId}.");
            await RequestTimeout(context, TimeSpan.FromSeconds(20), new SchedulingChangeIsOver());
        }
Пример #4
0
        public async Task <ScheduleTrainingResponse> SaveAsync(ScheduleTraining scheduleTraining)
        {
            try
            {
                await scheduleTrainingRepository.AddAsync(scheduleTraining);

                await unitOfWork.CompleteAsync();

                return(new ScheduleTrainingResponse(scheduleTraining));
            }
            catch (Exception ex)
            {
                return(new ScheduleTrainingResponse($"Ошибка при сохранении Расписание занятия: {ex.Message}"));
            }
        }
Пример #5
0
        static async Task RunLoop(IEndpointInstance endpointInstance)
        {
            var lastTraining = string.Empty;

            while (true)
            {
                log.Info("Press 'S' to schedule a training, 'C' to cancel last scheduled training, or 'Q' to quit.");
                var key = Console.ReadKey();
                Console.WriteLine();

                switch (key.Key)
                {
                case ConsoleKey.S:
                    // Instantiate the command
                    var command = new ScheduleTraining
                    {
                        TrainingId = Guid.NewGuid().ToString()
                    };

                    // Send the command
                    log.Info($"Sending ScheduleTraining command, TrainingId = {command.TrainingId}");
                    await endpointInstance.Send(command)
                    .ConfigureAwait(false);

                    lastTraining = command.TrainingId;     // Store training identifier to cancel if needed.
                    break;

                case ConsoleKey.C:
                    var cancelCommand = new CancelTraining
                    {
                        TrainingId = lastTraining
                    };
                    await endpointInstance.Send(cancelCommand)
                    .ConfigureAwait(false);

                    log.Info($"Sent a correlated message to {cancelCommand.TrainingId}");
                    break;

                case ConsoleKey.Q:
                    return;

                default:
                    log.Info("Unknown input. Please try again.");
                    break;
                }
            }
        }
        private async Task <ScheduleTraining> NewScheduleTraining(int trainingId, DateTime date, string email)
        {
            var training = await trainingRepository.GetTraining(trainingId, email);

            var newScheduleTraining = new ScheduleTraining
            {
                UserEmail    = email,
                TrainingId   = trainingId,
                TrainingDate = date,
                Name         = training.Name
            };
            await _context.ScheduleTrainings.AddAsync(newScheduleTraining);

            await _context.SaveChangesAsync();

            return(newScheduleTraining);
        }
Пример #7
0
        public async Task <ScheduleTrainingResponse> UpdateAsync(int id, ScheduleTraining scheduleTraining)
        {
            var existingScheduleTraining = await scheduleTrainingRepository.FindByIdAsync(id);

            if (existingScheduleTraining == null)
            {
                return(new ScheduleTrainingResponse("Расписание занятия не найдено!"));
            }

            existingScheduleTraining.IdTraining = scheduleTraining.IdTraining;

            try
            {
                scheduleTrainingRepository.Update(existingScheduleTraining);
                await unitOfWork.CompleteAsync();

                return(new ScheduleTrainingResponse(existingScheduleTraining));
            }
            catch (Exception ex)
            {
                return(new ScheduleTrainingResponse($"Ошибка при обновлении Расписание занятия: {ex.Message}"));
            }
        }
        private async Task <Models.Schedule.Exercise.ScheduleExercise> NewScheduleExercise(string email, ScheduleTraining scheduleTraining,
                                                                                           TrainingExercise trainingExercise)
        {
            var nScheduleExercise = new Models.Schedule.Exercise.ScheduleExercise
            {
                ExerciseId       = trainingExercise.ExerciseId,
                ScheduleTraining = scheduleTraining,
                UserEmail        = email,
                Order            = trainingExercise.Order
            };
            await _context.ScheduleExercises.AddAsync(nScheduleExercise);

            await _context.SaveChangesAsync();

            return(nScheduleExercise);
        }
        public async Task <ActionResult> FinishTraining(FinishTrainingIn form)
        {
            var email = GetEmail();
            var mScheduleTrainingTask = scheduleTrainingRepository.GetScheduleTrainingAsync(form.ScheduleTrainingId, email);
            var mScheduleTraining     = await mScheduleTrainingTask;
            var seriesTask            = scheduleSeriesRepository.GetScheduleSeriesForScheduleTrainingAsync(form.ScheduleTrainingId, email);

            mScheduleTraining.TrainingFinishDate = form.FinishDate;
            mScheduleTraining.Finish             = true;

            var seriesInFinishedTraining = await seriesTask;
            var seriesToComplete         = new List <ScheduleSeries>();
            var scheduleExercises        = new List <Models.Schedule.Exercise.ScheduleExercise>();
            var scheduleTraining         = new ScheduleTraining();
            var t = await trainingRepository.GetTraining(mScheduleTraining.TrainingId, email);

            if (form.CreateNextTraining)
            {
                scheduleTraining.TrainingDate   = form.NextTrainingDate;
                scheduleTraining.ExerciseNumber = mScheduleTraining.ExerciseNumber;
                scheduleTraining.Name           = t.Name;
                scheduleTraining.Finish         = false;
                scheduleTraining.UserEmail      = email;
                scheduleTraining.TrainingId     = mScheduleTraining.TrainingId;
                var   addTrainingTask = _context.ScheduleTrainings.AddAsync(scheduleTraining);
                await addTrainingTask;
            }
            var exercisesList = new List <Models.Schedule.Exercise.ScheduleExercise>();
            var seriesList    = new List <ScheduleSeries>();


            foreach (var series in seriesInFinishedTraining)
            {
                //Zakonczenie wszystkich serii
                if (!series.Finish)
                {
                    series.Finish = true;
                    seriesToComplete.Add(series);
                }
                if (form.CreateNextTraining)
                {
                    if (exercisesList.Find(e =>
                                           e.ExerciseId == series.ScheduleExercise.ExerciseId &&
                                           e.Order == series.ScheduleExercise.Order) ==
                        null)
                    {
                        //przekopiowanie cwiczen do nowego treningu
                        var c = new Models.Schedule.Exercise.ScheduleExercise
                        {
                            ExerciseId       = series.ScheduleExercise.ExerciseId,
                            ScheduleTraining = scheduleTraining,
                            Order            = series.ScheduleExercise.Order,
                            UserEmail        = email
                        };
                        exercisesList.Add(c);
                    }
                    //przekopiowanie serii do nowego treningu
                    var s = new ScheduleSeries
                    {
                        Time             = series.Time,
                        Distance         = series.Distance,
                        ScheduleExercise = exercisesList.Find(c =>
                                                              c.ExerciseId == series.ScheduleExercise.ExerciseId && c.Order == series.ScheduleExercise.Order),
                        Repeats   = series.Repeats,
                        Order     = series.Order,
                        Load      = series.Load,
                        RestTime  = series.RestTime,
                        Name      = CreateSeriesName(series),
                        UserEmail = email
                    };
                    seriesList.Add(s);
                }
                //aktualizacja serii
                if (!form.UpdateSeries)
                {
                    continue;
                }
                var se = await seriesRespository.GetSeriesForExerciseAsync(series.ScheduleExercise.ExerciseId, email);

                var newSeries = new Series
                {
                    Time       = series.Time,
                    Distance   = series.Distance,
                    Repeats    = series.Repeats,
                    Name       = series.Name,
                    Load       = series.Load,
                    RestTime   = series.RestTime,
                    Order      = series.Order,
                    ExerciseId = series.ScheduleExercise.ExerciseId,
                    UserEmail  = email
                };
                if (se != null)
                {
                    _context.RemoveRange(se);
                }
                await _context.Series.AddAsync(newSeries);
            }
            _context.UpdateRange(seriesToComplete);
            _context.Update(mScheduleTraining);
            await _context.SaveChangesAsync();

            if (!form.CreateNextTraining)
            {
                return(Ok());
            }
            var   addScheduleExerciseTask = _context.AddRangeAsync(scheduleExercises.Distinct());
            await addScheduleExerciseTask;

            var   addScheduleSeriesTask = _context.ScheduleSeries.AddRangeAsync(seriesList);
            await addScheduleSeriesTask;

            await _context.SaveChangesAsync();

            return(Ok());
        }
 public void Update(ScheduleTraining scheduleTraining)
 {
     context.ScheduleTraining.Update(scheduleTraining);
 }
 public void Remove(ScheduleTraining scheduleTraining)
 {
     context.ScheduleTraining.Remove(scheduleTraining);
 }
 public async Task AddAsync(ScheduleTraining scheduleTraining)
 {
     await context.ScheduleTraining.AddAsync(scheduleTraining);
 }
Пример #13
0
        //Dictionary<ScheduleTaskCtrl.TaskType, List<ScheduleBase>> m_listWorksData;
        /// <summary>
        /// 분석용 ScheduleTaskCtrl
        /// </summary>
        /// <param name="slotNo"></param>
        /// <returns></returns>
        //private List<ScheduleTaskCtrl.TaskButton> LoadYotogiData(int slotNo)
        private static int LoadYotogiData(int slotNo)
        {
            //this.m_scheduleApi = this.m_scheduleMgr.GetScheduleApi();
            List <ScheduleBase> scheduleData = ScheduleMgrPatch.m_scheduleApi.slot[slotNo].scheduleData.Where(x => x.workType != ScheduleType.Work).ToList();
            //List<ScheduleBase> scheduleData = ScheduleMgrPatch.m_scheduleApi.slot[slotNo].scheduleData;
            List <ScheduleBase> list = new List <ScheduleBase>();
            Maid maid = ScheduleMgrPatch.m_scheduleApi.slot[slotNo].maid;

            //this.m_listWorksData.Add(ScheduleTaskCtrl.TaskType.Yotogi, list);
            //List<ScheduleTaskCtrl.TaskButton> list2 = new List<ScheduleTaskCtrl.TaskButton>();
            MyLog.LogMessage(
                "scheduleBase"
                , maid.status.fullNameEnStyle
                , slotNo
                );
            foreach (ScheduleBase scheduleBase in scheduleData)
            {
                bool flag = false;
                //bool legacyDisable;
                //if (DailyMgr.IsLegacy && ScheduleCSVData.WorkLegacyDisableId.Contains(scheduleBase.id))
                //{
                //    legacyDisable = true;
                //}
                if (maid != null && scheduleBase.enabled)
                {
                    flag = PersonalEventBlocker.IsEnabledScheduleTask(maid.status.personal, scheduleBase.id);
                }
                //list.Add(scheduleBase);
                if (scheduleBase.workType == ScheduleType.Yotogi)
                {
                    ScheduleYotogi scheduleYotogi = (ScheduleYotogi)scheduleBase;
                    if (scheduleYotogi.visible)
                    {
                        list.Add(scheduleBase);
                    }
                    if (configEntryUtill["LoadYotogiData", false])
                    {
                        MyLog.LogMessage(
                            "scheduleBase"
                            , scheduleBase.id
                            , scheduleBase.workType
                            , scheduleYotogi.visible
                            , scheduleYotogi.enabled
                            );
                    }
                }
                if (scheduleBase.workType == ScheduleType.Training)
                {
                    //if (this.legacyDisable)
                    //{
                    //    this.visible = false;
                    //}
                    ScheduleTraining scheduleTraining = (ScheduleTraining)scheduleBase;
                    if (scheduleTraining.visible)
                    {
                        list.Add(scheduleBase);
                        //list2.Add(new ScheduleTaskCtrl.TrainingTaskButton {
                        //    id = scheduleTraining.id.ToString(),
                        //    name = scheduleTraining.name,
                        //    rank = scheduleTraining.lv,
                        //    expRatio = scheduleTraining.expRatioFrom0To10,
                        //    txtTaskIcon = scheduleTraining.icon,
                        //    enableTask = scheduleTraining.enabled,
                        //    type = scheduleTraining.type
                        //});
                    }
                    if (configEntryUtill["LoadYotogiData", false])
                    {
                        MyLog.LogMessage(
                            "scheduleBase"
                            , scheduleBase.id
                            , scheduleBase.workType
                            , scheduleTraining.visible
                            , scheduleTraining.enabled
                            );
                    }
                }
            }
            int ic = UnityEngine.Random.Range(0, list.Count);

            return(list[ic].id);
            //return list2;
        }
Пример #14
0
 public ScheduleTrainingResponse(bool success, string message, ScheduleTraining scheduleTraining) : base(success, message)
 {
     ScheduleTraining = scheduleTraining;
 }
Пример #15
0
 public ScheduleTrainingResponse(ScheduleTraining scheduleTraining) : this(true, string.Empty, scheduleTraining)
 {
 }