Exemplo n.º 1
0
        public bool CopyTrainingWeek(string currentUserId, CopyTrainingWeek copyTrainingWeek, out TrainingWeek newTrainingWeek)
        {
            newTrainingWeek = null;
            if (string.IsNullOrWhiteSpace(copyTrainingWeek.UserId) || copyTrainingWeek.OriginYear == 0 || copyTrainingWeek.OriginWeekOfYear == 0 ||
            copyTrainingWeek.Year == 0 || copyTrainingWeek.WeekOfYear == 0 || currentUserId != copyTrainingWeek.UserId)
                return false;

            bool result = false;
            //Verify valid week of year
            if (copyTrainingWeek.WeekOfYear > 0 && copyTrainingWeek.WeekOfYear <= 52 &&
                !(copyTrainingWeek.Year == copyTrainingWeek.OriginYear && copyTrainingWeek.WeekOfYear == copyTrainingWeek.OriginWeekOfYear))
            {
                //check if new trainingWeek exist
                var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false };
                var trainingWeekKey = new TrainingWeekKey() { UserId = copyTrainingWeek.UserId, Year = copyTrainingWeek.Year, WeekOfYear = copyTrainingWeek.WeekOfYear };
                var trainingWeek = GetTrainingWeek(trainingWeekKey, trainingWeekScenario);

                if (trainingWeek != null)
                    throw new ErrorException(string.Format(Translation.P0_ALREADY_EXIST, Translation.TRAINING_WEEK));

                // Check if origin training week exist
                trainingWeekScenario = new TrainingWeekScenario()
                {
                    ManageTrainingDay = true,
                    TrainingDayScenario = new TrainingDayScenario() { ManageExercise = true }
                };
                trainingWeekKey = new TrainingWeekKey() { UserId = copyTrainingWeek.UserId, Year = copyTrainingWeek.OriginYear, WeekOfYear = copyTrainingWeek.OriginWeekOfYear };
                trainingWeek = GetTrainingWeek(trainingWeekKey, trainingWeekScenario);

                if (trainingWeek == null)
                    throw new ErrorException(string.Format(Translation.P0_NOT_EXIST, Translation.TRAINING_WEEK));

                //Change ids of origin training week/exercise/day etc.. for new trainingweek
                ChangeIDForNewTrainingWeek(trainingWeek, copyTrainingWeek.OriginYear, copyTrainingWeek.OriginWeekOfYear, copyTrainingWeek.Year, copyTrainingWeek.WeekOfYear);

                // Create data in database (with update for Security existing old data in database)
                trainingWeek = UpdateTrainingWeek(trainingWeek, trainingWeekScenario);

                if (trainingWeek == null)
                {
                    throw new ErrorException(string.Format(Translation.IMPOSSIBLE_TO_CREATE_P0, Translation.TRAINING_WEEK));
                }
                else
                {
                    result = true;
                    newTrainingWeek = trainingWeek;
                }
            }
            return result;
        }
Exemplo n.º 2
0
 public bool CopyTrainingWeek(string currentUserId, CopyTrainingWeek copyTrainingWeek, out TrainingWeek newTrainingWeek)
 {
     bool result = false;
     BeginTransaction();
     try
     {
         result = GetTrainingWeekManager().CopyTrainingWeek(currentUserId, copyTrainingWeek, out newTrainingWeek);
         CommitTransaction();
         result = true;
     }
     catch (Exception exception)
     {
         _logger.LogCritical("Unable to copy training week", exception);
         RollbackTransaction();
         throw exception;
     }
     finally
     {
         EndTransaction();
     }
     return result;
 }
        public IActionResult Copy(CopyTrainingWeekViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                ViewBag.UserUnit = GetUserUnit(viewModel.UserId);
                if(viewModel == null)
                    return View(viewModel);

                try
                {
                    var copyTrainingWeek = new CopyTrainingWeek()
                    {
                        UserId = viewModel.UserId,
                        OriginYear = viewModel.OriginYear,
                        OriginWeekOfYear = viewModel.OriginWeekOfYear,
                        Year = viewModel.Year,
                        WeekOfYear = viewModel.WeekOfYear
                    };
                    TrainingWeek trainingWeek;
                    if (!_trainingWeeksService.CopyTrainingWeek(SessionUserId, copyTrainingWeek, out trainingWeek))
                        return View(viewModel);

                    return RedirectToAction("View", new { userId = trainingWeek.UserId, year = trainingWeek.Year, weekOfYear = trainingWeek.WeekOfYear });
                }
                catch (ErrorException error)
                {
                    ModelState.AddModelError(string.Empty, error.Message);
                    return View(viewModel);
                }
            }

            return View(viewModel);
        }