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); }
public IActionResult Copy(string userId, int year, int weekOfYear) { if (string.IsNullOrWhiteSpace(userId) || year == 0 || weekOfYear == 0 || SessionUserId != userId) return RedirectToAction("Index"); ViewBag.UserUnit = GetUserUnit(userId); var key = new TrainingWeekKey() { UserId = userId, Year = year, WeekOfYear = weekOfYear }; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true, TrainingDayScenario = new TrainingDayScenario() { ManageExercise = true } }; var trainingWeek = _trainingWeeksService.GetTrainingWeek(key, trainingWeekScenario); if (trainingWeek == null) // no data found return RedirectToAction("Index"); var userInfo = _userInfosService.GetUserInfo(new UserInfoKey() { UserId = SessionUserId }); if (userInfo == null) userInfo = new UserInfo(); var timeZoneInfo = TimeZoneMapper.GetTimeZoneByOlsonName(userInfo.TimeZoneName); if (timeZoneInfo == null) timeZoneInfo = TimeZoneInfo.Local; DateTime dateTime = TimeZoneInfo.ConvertTime(DateTime.Now, timeZoneInfo); int nextWeekOfYear = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); if (dateTime.Year == year && nextWeekOfYear == weekOfYear && nextWeekOfYear < 52) { nextWeekOfYear++; } var viewModel = new CopyTrainingWeekViewModel() { UserId = userId, OriginWeekOfYear = weekOfYear, OriginYear = year, Year = dateTime.Year, WeekOfYear = nextWeekOfYear }; //Need for refresh WeekOfYear in CopyTrainingWeekViewModel. Why? i don't understand on this page. ModelState.Clear(); return View(viewModel); }