public IActionResult Get(TrainingWeekKey trainingWeekKey, Boolean manageDay = false) { try { if (trainingWeekKey == null) { return(BadRequest()); } var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = manageDay }; if (manageDay) { trainingWeekScenario.TrainingDayScenario = new TrainingDayScenario() { ManageExercise = true }; } var trainingWeek = _trainingWeeksService.GetTrainingWeek(trainingWeekKey, trainingWeekScenario); return(new OkObjectResult(trainingWeek)); } catch (Exception exception) { return(BadRequest(new WebApiException("Error", exception))); } }
private async Task <bool> SaveDataAsync() { TrainingWeek trainingWeek = null; if (EditMode == TEditMode.Create) { trainingWeek = await TrainingWeekWebService.CreateTrainingWeekAsync(TrainingWeek); if (trainingWeek != null) { var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true }; _trainingWeekService.UpdateTrainingWeek(trainingWeek, trainingWeekScenario); } } else { var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false }; trainingWeek = await TrainingWeekWebService.UpdateTrainingWeekAsync(TrainingWeek, trainingWeekScenario); if (trainingWeek != null) { _trainingWeekService.UpdateTrainingWeek(trainingWeek, trainingWeekScenario); } } return(trainingWeek != null); }
internal void DeleteTrainingWeek(TrainingWeekKey key) { var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true, TrainingDayScenario = new TrainingDayScenario() { ManageExercise = true } }; var trainingWeek = GetTrainingWeek(key, trainingWeekScenario); if (trainingWeek != null) { _trainingWeekModule.Delete(key); if (trainingWeek.TrainingDays != null) { foreach (var trainingDay in trainingWeek.TrainingDays) { _trainingDayService.DeleteTrainingDay(trainingDay); } } } }
public IActionResult Create([FromBody] TrainingDayViewModel viewModel) { try { if (ModelState.IsValid) { if (string.IsNullOrWhiteSpace(viewModel.UserId) || viewModel.Year == 0 || viewModel.WeekOfYear == 0 || viewModel.DayOfWeek < 0 || viewModel.DayOfWeek > 6 || SessionUserId != viewModel.UserId) { return(BadRequest()); } //Verify trainingWeek exist var trainingWeekKey = new TrainingWeekKey() { UserId = viewModel.UserId, Year = viewModel.Year, WeekOfYear = viewModel.WeekOfYear }; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false }; var trainingWeek = _trainingWeeksService.GetTrainingWeek(trainingWeekKey, trainingWeekScenario); if (trainingWeek == null) { return(BadRequest(new WebApiException(string.Format(Translation.P0_NOT_EXIST, Translation.TRAINING_WEEK)))); } //Verify valid week of year if (viewModel.WeekOfYear > 0 && viewModel.WeekOfYear <= 52) { var trainingDay = ControllerUtils.TransformViewModelToTrainingDay(viewModel); trainingDay = _trainingDaysService.CreateTrainingDay(trainingDay); if (trainingDay == null) { return(BadRequest(new WebApiException(string.Format(Translation.IMPOSSIBLE_TO_CREATE_P0, Translation.TRAINING_DAY)))); } else { return(new OkObjectResult(trainingDay)); } } else { return(BadRequest()); } } else { return(BadRequest(new WebApiException(ControllerUtils.GetModelStateError(ModelState)))); } } catch (Exception exception) { return(BadRequest(new WebApiException("Error", exception))); } }
public async Task CopyTrainingDayActionAsync(DayOfWeek dayOfWeek) { if (TrainingWeek == null) { return; } try { var trainingDayKey = new TrainingDayKey() { UserId = TrainingWeek.UserId, Year = TrainingWeek.Year, WeekOfYear = TrainingWeek.WeekOfYear, DayOfWeek = (int)dayOfWeek }; List <GenericData> datas = new List <GenericData>(); foreach (DayOfWeek dayOfWeekTmp in Enum.GetValues(typeof(DayOfWeek))) { if (dayOfWeekTmp != dayOfWeek) { datas.Add(new GenericData() { Tag = (int)dayOfWeekTmp, Name = Translation.Get(dayOfWeekTmp.ToString().ToUpper()) }); } } var result = await ListViewModel.ShowGenericListAsync(Translation.Get(TRS.DAY_OF_WEEK), datas, null, this); if (result.Validated && result.SelectedData != null) { int dayOfWeekSelected = (int)result.SelectedData.Tag; //Copy day on server await TrainingDayWebService.CopyDayOfTrainingDay(trainingDayKey, dayOfWeekSelected); //Reload updated TrainingWeek on server var updatedTrainingWeek = await TrainingWeekWebService.GetTrainingWeekAsync(TrainingWeek, true); if (updatedTrainingWeek != null) { var trainingWeekService = new TrainingWeekService(DbContext); var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true }; trainingWeekService.UpdateTrainingWeek(updatedTrainingWeek, trainingWeekScenario); //Update UI TrainingWeek = updatedTrainingWeek; await SynchronizeDataAsync(); } } } catch (Exception except) { await _userDialog.AlertAsync(except.Message, Translation.Get(TRS.ERROR), Translation.Get(TRS.OK)); } }
private void RetreiveLocalData() { var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false }; _trainingWeekList = _trainingWeekService.FindTrainingWeek(null, trainingWeekScenario); }
internal TrainingWeek GetTrainingWeek(TrainingWeekKey key, TrainingWeekScenario trainingWeekScenario) { var trainingWeek = _trainingWeekModule.Get(key); if (trainingWeek != null && trainingWeekScenario != null && trainingWeekScenario.ManageTrainingDay) { CompleteTrainingWeekWithTrainingDay(trainingWeek, trainingWeekScenario.TrainingDayScenario); } return(trainingWeek); }
private static void UpdateTrainingWeekModificationDate(ApplicationDbContext dbContext, DateTime modificationDate, TrainingWeekKey trainingWeekKey) { var trainingWeeksService = WebAppConfiguration.ServiceProvider.GetService<ITrainingWeeksService>(); ((BodyReportService)trainingWeeksService).SetDbContext(dbContext); var scenario = new TrainingWeekScenario() { ManageTrainingDay = false }; var trainingWeek = trainingWeeksService.GetTrainingWeek(trainingWeekKey, scenario); if (trainingWeek != null && trainingWeek.ModificationDate != null && modificationDate != null && (modificationDate - trainingWeek.ModificationDate).TotalSeconds > 2) // don't spam database { trainingWeeksService.UpdateTrainingWeek(trainingWeek, scenario); } }
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; }
internal TrainingWeek UpdateTrainingWeek(TrainingWeek trainingWeek, TrainingWeekScenario trainingWeekScenario) { TrainingWeek trainingWeekResult = null; trainingWeekResult = _trainingWeekModule.Update(trainingWeek); if (trainingWeekScenario != null && trainingWeekScenario.ManageTrainingDay) { var trainingDayScenario = new TrainingDayScenario() { ManageExercise = true }; var trainingDayCriteria = new TrainingDayCriteria() { UserId = new StringCriteria() { Equal = trainingWeek.UserId }, Year = new IntegerCriteria() { Equal = trainingWeek.Year }, WeekOfYear = new IntegerCriteria() { Equal = trainingWeek.WeekOfYear } }; var trainingDaysDb = _trainingDaysService.FindTrainingDay(AppUtils.GetUserUnit(_userInfosService, trainingWeek.UserId), trainingDayCriteria, trainingDayScenario); if (trainingDaysDb != null && trainingDaysDb.Count > 0) { foreach (var trainingDayDb in trainingDaysDb) { _trainingDaysService.DeleteTrainingDay(trainingDayDb); } } if (trainingWeek.TrainingDays != null) { trainingWeekResult.TrainingDays = new List <TrainingDay>(); foreach (var trainingDay in trainingWeek.TrainingDays) { trainingWeekResult.TrainingDays.Add(_trainingDaysService.UpdateTrainingDay(trainingDay, trainingWeekScenario.TrainingDayScenario)); } } } return(trainingWeekResult); }
internal TrainingWeek UpdateTrainingWeek(TrainingWeek trainingWeek, TrainingWeekScenario trainingWeekScenario) { DbContext.ChangeTracker.AutoDetectChangesEnabled = false; TrainingWeek trainingWeekResult = null; trainingWeekResult = _trainingWeekModule.Update(trainingWeek); if (trainingWeekScenario != null && trainingWeekScenario.ManageTrainingDay) { var trainingDayCriteria = new TrainingDayCriteria() { UserId = new StringCriteria() { Equal = trainingWeek.UserId }, Year = new IntegerCriteria() { Equal = trainingWeek.Year }, WeekOfYear = new IntegerCriteria() { Equal = trainingWeek.WeekOfYear } }; var userUnit = AppUtils.GetUserUnit(_userInfosService, trainingWeek.UserId); var trainingDaysDb = _trainingDayService.FindTrainingDay(userUnit, trainingDayCriteria, trainingWeekScenario.TrainingDayScenario); if (trainingDaysDb != null && trainingDaysDb.Count > 0) { foreach (var trainingDayDb in trainingDaysDb) { _trainingDayService.DeleteTrainingDay(trainingDayDb); } } if (trainingWeek.TrainingDays != null) { trainingWeekResult.TrainingDays = new List <TrainingDay>(); foreach (var trainingDay in trainingWeek.TrainingDays) { trainingWeekResult.TrainingDays.Add(_trainingDayService.UpdateTrainingDay(trainingDay, trainingWeekScenario.TrainingDayScenario)); } } } DbContext.ChangeTracker.DetectChanges(); DbContext.SaveChanges(); DbContext.ChangeTracker.AutoDetectChangesEnabled = true; return(trainingWeekResult); }
private async Task <bool> SaveDataAsync() { bool result = false; TrainingWeek trainingWeek = await TrainingWeekWebService.CopyTrainingWeekAsync(CopyTrainingWeek); if (trainingWeek != null) { var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true }; _trainingWeekService.UpdateTrainingWeek(trainingWeek, trainingWeekScenario); result = true; } return(result); }
private static void UpdateTrainingWeekModificationDate(ApplicationDbContext dbContext, DateTime modificationDate, TrainingWeekKey trainingWeekKey) { var trainingWeeksService = WebAppConfiguration.ServiceProvider.GetService <ITrainingWeeksService>(); ((BodyReportService)trainingWeeksService).SetDbContext(dbContext); var scenario = new TrainingWeekScenario() { ManageTrainingDay = false }; var trainingWeek = trainingWeeksService.GetTrainingWeek(trainingWeekKey, scenario); if (trainingWeek != null && trainingWeek.ModificationDate != null && modificationDate != null && (modificationDate - trainingWeek.ModificationDate).TotalSeconds > 2) // don't spam database { trainingWeeksService.UpdateTrainingWeek(trainingWeek, scenario); } }
public IActionResult Create([FromBody]TrainingDayViewModel viewModel) { try { if (ModelState.IsValid) { if (string.IsNullOrWhiteSpace(viewModel.UserId) || viewModel.Year == 0 || viewModel.WeekOfYear == 0 || viewModel.DayOfWeek < 0 || viewModel.DayOfWeek > 6 || SessionUserId != viewModel.UserId) return BadRequest(); //Verify trainingWeek exist var trainingWeekKey = new TrainingWeekKey() { UserId = viewModel.UserId, Year = viewModel.Year, WeekOfYear = viewModel.WeekOfYear }; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false }; var trainingWeek = _trainingWeeksService.GetTrainingWeek(trainingWeekKey, trainingWeekScenario); if (trainingWeek == null) return BadRequest(new WebApiException(string.Format(Translation.P0_NOT_EXIST, Translation.TRAINING_WEEK))); //Verify valid week of year if (viewModel.WeekOfYear > 0 && viewModel.WeekOfYear <= 52) { var trainingDay = ControllerUtils.TransformViewModelToTrainingDay(viewModel); trainingDay = _trainingDaysService.CreateTrainingDay(trainingDay); if (trainingDay == null) return BadRequest(new WebApiException(string.Format(Translation.IMPOSSIBLE_TO_CREATE_P0, Translation.TRAINING_DAY))); else return new OkObjectResult(trainingDay); } else return BadRequest(); } else return BadRequest(new WebApiException(ControllerUtils.GetModelStateError(ModelState))); } catch (Exception exception) { return BadRequest(new WebApiException("Error", exception)); } }
public TrainingWeek UpdateTrainingWeek(TrainingWeek trainingWeek, TrainingWeekScenario trainingWeekScenario) { TrainingWeek result = null; BeginTransaction(); try { result = GetTrainingWeekManager().UpdateTrainingWeek(trainingWeek, trainingWeekScenario); CommitTransaction(); } catch { RollbackTransaction(); throw; } finally { EndTransaction(); } return(result); }
public TrainingWeek UpdateTrainingWeek(TrainingWeek trainingWeek, TrainingWeekScenario trainingWeekScenario) { TrainingWeek result = null; BeginTransaction(); try { result = GetTrainingWeekManager().UpdateTrainingWeek(trainingWeek, trainingWeekScenario); CommitTransaction(); } catch (Exception exception) { _logger.LogCritical("Unable to update training week", exception); RollbackTransaction(); throw exception; } finally { EndTransaction(); } return(result); }
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); }
public List <TrainingWeek> FindTrainingWeek(TrainingWeekCriteria trainingWeekCriteria, TrainingWeekScenario trainingWeekScenario) { return(FindTrainingWeek(new CriteriaList <TrainingWeekCriteria>() { trainingWeekCriteria }, trainingWeekScenario)); }
public IActionResult Edit(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 trainingJournal = _trainingWeeksService.GetTrainingWeek(key, trainingWeekScenario); if (trainingJournal == null) // no data found return RedirectToAction("Index"); return View(TrainingViewModelTransformer.TrainingWeekToViewModel(trainingJournal, _usersService)); }
public IActionResult Edit(TrainingWeekViewModel viewModel) { if (ModelState.IsValid) { ViewBag.UserUnit = GetUserUnit(viewModel.UserId); if (string.IsNullOrWhiteSpace(viewModel.UserId) || viewModel.Year == 0 || viewModel.WeekOfYear == 0 || SessionUserId != viewModel.UserId) return View(viewModel); //Verify valide week of year if (viewModel.WeekOfYear > 0 && viewModel.WeekOfYear <= 52 && (viewModel.Unit == (int)TUnitType.Imperial || viewModel.Unit == (int)TUnitType.Metric)) { var trainingWeek = TransformViewModelToTrainingWeek(viewModel); var trainingWeekKey = new TrainingWeekKey() { UserId = trainingWeek.UserId, Year = trainingWeek.Year, WeekOfYear = trainingWeek.WeekOfYear }; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false }; var existTrainingWeek = _trainingWeeksService.GetTrainingWeek(trainingWeekKey, trainingWeekScenario); if (existTrainingWeek == null) { ModelState.AddModelError(string.Empty, string.Format(Translation.P0_NOT_EXIST, Translation.TRAINING_WEEK)); return View(viewModel); } //Create data in database. No need transaction, only header trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false }; trainingWeek = _trainingWeeksService.UpdateTrainingWeek(trainingWeek, trainingWeekScenario); if (trainingWeek == null) { ModelState.AddModelError(string.Empty, string.Format(Translation.IMPOSSIBLE_TO_UPDATE_P0, Translation.TRAINING_JOURNAL)); return View(viewModel); } return RedirectToAction("View", new { userId = trainingWeek.UserId, year = trainingWeek.Year, weekOfYear = trainingWeek.WeekOfYear }); } } return View(viewModel); }
public static async Task <List <TrainingWeek> > FindTrainingWeeksAsync(CriteriaList <TrainingWeekCriteria> trainingWeekCriteriaList, TrainingWeekScenario trainingWeekScenario) { if (trainingWeekCriteriaList == null) { return(null); } var trainingWeekFinder = new TrainingWeekFinder(); trainingWeekFinder.TrainingWeekCriteriaList = trainingWeekCriteriaList; trainingWeekFinder.TrainingWeekScenario = trainingWeekScenario; return(await HttpConnector.Instance.PostAsync <TrainingWeekFinder, List <TrainingWeek> > ("Api/TrainingWeeks/Find", trainingWeekFinder)); }
// // GET: /Report/TrainingDayReport/Index public IActionResult Index(string userId, int year, int weekOfYear, int dayOfWeek, int? trainingDayId, bool displayImages, string userIdViewer) { var userInfo = _userInfosService.GetUserInfo(new UserInfoKey() { UserId = userId }); if (userInfo == null) userInfo = new UserInfo(); var trainingWeekKey = new TrainingWeekKey() { UserId = userId, Year = year, WeekOfYear = weekOfYear }; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true, TrainingDayScenario = new TrainingDayScenario() { ManageExercise = true } }; var trainingWeek = _trainingWeeksService.GetTrainingWeek(trainingWeekKey, trainingWeekScenario); if (trainingWeek == null) trainingWeek = new TrainingWeek(); //Unit viewer convertion if (string.IsNullOrEmpty(userIdViewer)) { userIdViewer = SessionUserId; } var viewerUnit = GetUserUnit(userIdViewer); var userUnit = GetUserUnit(userId); trainingWeek.UserHeight = Utils.TransformLengthToUnitSytem(userUnit, viewerUnit, trainingWeek.UserHeight); trainingWeek.UserWeight = Utils.TransformWeightToUnitSytem(userUnit, viewerUnit, trainingWeek.UserWeight); var trainingWeekViewModel = TrainingViewModelTransformer.TrainingWeekToViewModel(trainingWeek, _usersService); List<TrainingDayViewModel> trainingDayViewModels = null; List<TrainingExerciseViewModel> trainingExerciseViewModels = null; if (trainingWeek != null && trainingWeek.TrainingDays != null && trainingWeek.TrainingDays.Count > 0) { trainingDayViewModels = new List<TrainingDayViewModel>(); foreach (var trainingDay in trainingWeek.TrainingDays) { if (!trainingDayId.HasValue || trainingDay.TrainingDayId == trainingDayId) { if (trainingDay.DayOfWeek == dayOfWeek) { // Get only current trainingDayViewModels.Add(TrainingViewModelTransformer.TrainingDayToViewModel(trainingDay, userInfo)); var trainingExercises = FindTrainingExercise(trainingDay); if (trainingExercises != null) { foreach (var trainingExercise in trainingExercises) { //Convert user Unit to viewer unit if (trainingExercise.TrainingExerciseSets != null) { foreach (var set in trainingExercise.TrainingExerciseSets) set.Weight = Utils.TransformWeightToUnitSytem(userUnit, viewerUnit, set.Weight); } if (trainingExerciseViewModels == null) trainingExerciseViewModels = new List<TrainingExerciseViewModel>(); trainingExerciseViewModels.Add(TrainingViewModelTransformer.TrainingExerciseToViewModel(trainingExercise, _bodyExercisesService)); } } } } } } ViewBag.DayOfWeek = dayOfWeek; ViewBag.displayImages = displayImages; ViewBag.ViewerUnit = viewerUnit; return View(new Tuple<TrainingWeekViewModel, List<TrainingDayViewModel>, List<TrainingExerciseViewModel>>(trainingWeekViewModel, trainingDayViewModels, trainingExerciseViewModels)); }
internal void DeleteTrainingWeek(TrainingWeekKey key) { var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true, TrainingDayScenario = new TrainingDayScenario() { ManageExercise = true } }; var trainingWeek = GetTrainingWeek(key, trainingWeekScenario); if (trainingWeek != null) { _trainingWeekModule.Delete(key); if (trainingWeek.TrainingDays != null) { foreach (var trainingDay in trainingWeek.TrainingDays) { _trainingDaysService.DeleteTrainingDay(trainingDay); } } } }
internal TrainingWeek GetTrainingWeek(TrainingWeekKey key, TrainingWeekScenario trainingWeekScenario) { var trainingWeek = _trainingWeekModule.Get(key); if (trainingWeek != null && trainingWeekScenario != null && trainingWeekScenario.ManageTrainingDay) { CompleteTrainingWeekWithTrainingDay(trainingWeek, trainingWeekScenario.TrainingDayScenario); } return trainingWeek; }
public List<TrainingWeek> FindTrainingWeek(CriteriaList<TrainingWeekCriteria> trainingWeekCriteriaList, TrainingWeekScenario trainingWeekScenario) { List<TrainingWeek> trainingWeeks = _trainingWeekModule.Find(trainingWeekCriteriaList); if (trainingWeekScenario != null && trainingWeekScenario.ManageTrainingDay) { foreach (TrainingWeek trainingJournal in trainingWeeks) { CompleteTrainingWeekWithTrainingDay(trainingJournal, trainingWeekScenario.TrainingDayScenario); } } return trainingWeeks; }
public List <TrainingWeek> FindTrainingWeek(CriteriaList <TrainingWeekCriteria> trainingWeekCriteriaList, TrainingWeekScenario trainingWeekScenario) { return(GetTrainingWeekManager().FindTrainingWeek(trainingWeekCriteriaList, trainingWeekScenario)); }
public TrainingWeek GetTrainingWeek(TrainingWeekKey key, TrainingWeekScenario trainingWeekScenario) { return(GetTrainingWeekManager().GetTrainingWeek(key, trainingWeekScenario)); }
public IActionResult Index(string userId, int year, int weekOfYear, int? dayOfWeekSelected) { var viewModel = new List<TrainingWeekViewModel>(); var searchCriteria = new TrainingWeekCriteria() { UserId = new StringCriteria() { Equal = SessionUserId } }; var scenario = new TrainingWeekScenario() { ManageTrainingDay = false }; var trainingWeekList = _trainingWeeksService.FindTrainingWeek(searchCriteria, scenario); if (trainingWeekList != null) { foreach (var trainingWeek in trainingWeekList) { viewModel.Add(TrainingViewModelTransformer.TrainingWeekToViewModel(trainingWeek, _usersService)); } } return View(viewModel); }
public TrainingWeek UpdateTrainingWeek(TrainingWeek trainingWeek, TrainingWeekScenario trainingWeekScenario) { TrainingWeek result = null; BeginTransaction(); try { result = GetTrainingWeekManager().UpdateTrainingWeek(trainingWeek, trainingWeekScenario); CommitTransaction(); } catch (Exception exception) { _logger.LogCritical("Unable to update training week", exception); RollbackTransaction(); throw exception; } finally { EndTransaction(); } return result; }
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); }
public TrainingWeek GetTrainingWeek(TrainingWeekKey key, TrainingWeekScenario trainingWeekScenario) { return GetTrainingWeekManager().GetTrainingWeek(key, trainingWeekScenario); }
// // GET: /Report/TrainingDayReport/Index public IActionResult Index(string userId, int year, int weekOfYear, int dayOfWeek, int?trainingDayId, bool displayImages, string userIdViewer) { var userInfo = _userInfosService.GetUserInfo(new UserInfoKey() { UserId = userId }); if (userInfo == null) { userInfo = new UserInfo(); } var trainingWeekKey = new TrainingWeekKey() { UserId = userId, Year = year, WeekOfYear = weekOfYear }; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true, TrainingDayScenario = new TrainingDayScenario() { ManageExercise = true } }; var trainingWeek = _trainingWeeksService.GetTrainingWeek(trainingWeekKey, trainingWeekScenario); if (trainingWeek == null) { trainingWeek = new TrainingWeek(); } //Unit viewer convertion if (string.IsNullOrEmpty(userIdViewer)) { userIdViewer = SessionUserId; } var viewerUnit = AppUtils.GetUserUnit(_userInfosService, userIdViewer); var userUnit = AppUtils.GetUserUnit(_userInfosService, userId); trainingWeek.UserHeight = Utils.TransformLengthToUnitSytem(userUnit, viewerUnit, trainingWeek.UserHeight); trainingWeek.UserWeight = Utils.TransformWeightToUnitSytem(userUnit, viewerUnit, trainingWeek.UserWeight); var trainingWeekViewModel = TrainingViewModelTransformer.TrainingWeekToViewModel(trainingWeek, _usersService); List <TrainingDayViewModel> trainingDayViewModels = null; List <TrainingExerciseViewModel> trainingExerciseViewModels = null; if (trainingWeek != null && trainingWeek.TrainingDays != null && trainingWeek.TrainingDays.Count > 0) { trainingDayViewModels = new List <TrainingDayViewModel>(); foreach (var trainingDay in trainingWeek.TrainingDays) { if (!trainingDayId.HasValue || trainingDay.TrainingDayId == trainingDayId) { if (trainingDay.DayOfWeek == dayOfWeek) { // Get only current trainingDayViewModels.Add(TrainingViewModelTransformer.TrainingDayToViewModel(trainingDay, userInfo)); var trainingExercises = FindTrainingExercise(trainingDay); if (trainingExercises != null) { foreach (var trainingExercise in trainingExercises) { //Convert user Unit to viewer unit if (trainingExercise.TrainingExerciseSets != null) { foreach (var set in trainingExercise.TrainingExerciseSets) { set.Weight = Utils.TransformWeightToUnitSytem(userUnit, viewerUnit, set.Weight); } } if (trainingExerciseViewModels == null) { trainingExerciseViewModels = new List <TrainingExerciseViewModel>(); } trainingExerciseViewModels.Add(TrainingViewModelTransformer.TrainingExerciseToViewModel(trainingExercise, _bodyExercisesService)); } } } } } } ViewBag.DayOfWeek = dayOfWeek; ViewBag.displayImages = displayImages; ViewBag.ViewerUnit = viewerUnit; return(View(new Tuple <TrainingWeekViewModel, List <TrainingDayViewModel>, List <TrainingExerciseViewModel> >(trainingWeekViewModel, trainingDayViewModels, trainingExerciseViewModels))); }
public List <TrainingWeek> FindTrainingWeek(TrainingWeekCriteria trainingWeekCriteria, TrainingWeekScenario trainingWeekScenario) { List <TrainingWeek> trainingWeeks = _trainingWeekModule.Find(trainingWeekCriteria); if (trainingWeeks != null && trainingWeekScenario != null && trainingWeekScenario.TrainingDayScenario != null) { foreach (TrainingWeek trainingJournal in trainingWeeks) { CompleteTrainingWeekWithTrainingDay(trainingJournal, trainingWeekScenario.TrainingDayScenario); } } return(trainingWeeks); }
public IActionResult View(string userId, int year, int weekOfYear, int? dayOfWeekSelected) { var userInfo = _userInfosService.GetUserInfo(new UserInfoKey() { UserId = userId }); if (userInfo == null) userInfo = new UserInfo(); var timeZoneInfo = TimeZoneMapper.GetTimeZoneByOlsonName(userInfo.TimeZoneName); if (timeZoneInfo == null) timeZoneInfo = TimeZoneInfo.Local; DayOfWeek currentDayOfWeek = GetCurrentDayOfWeek(dayOfWeekSelected, timeZoneInfo); if (!dayOfWeekSelected.HasValue) dayOfWeekSelected = (int)currentDayOfWeek; var trainingWeekKey = new TrainingWeekKey() { UserId = userId, Year = year, WeekOfYear = weekOfYear }; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true, TrainingDayScenario = new TrainingDayScenario() { ManageExercise = true } }; var trainingWeek = _trainingWeeksService.GetTrainingWeek(trainingWeekKey, trainingWeekScenario); if (trainingWeek == null) return RedirectToAction("Index"); //Unit viewer convertion string userIdViewer = SessionUserId; var viewerUnit = GetUserUnit(userIdViewer); var userUnit = GetUserUnit(userId); trainingWeek.UserHeight = Utils.TransformLengthToUnitSytem(userUnit, viewerUnit, trainingWeek.UserHeight); trainingWeek.UserWeight = Utils.TransformWeightToUnitSytem(userUnit, viewerUnit, trainingWeek.UserWeight); var trainingWeekViewModel = TrainingViewModelTransformer.TrainingWeekToViewModel(trainingWeek, _usersService); List<TrainingDayViewModel> trainingDayViewModels = null; List<TrainingExerciseViewModel> trainingExerciseViewModels = null; if (trainingWeek != null && trainingWeek.TrainingDays != null && trainingWeek.TrainingDays.Count > 0) { trainingDayViewModels = new List<TrainingDayViewModel>(); foreach (var trainingDay in trainingWeek.TrainingDays) { trainingDayViewModels.Add(TrainingViewModelTransformer.TrainingDayToViewModel(trainingDay, userInfo)); if (dayOfWeekSelected.HasValue && trainingDay.DayOfWeek == dayOfWeekSelected) { // Get only current var trainingExercises = FindTrainingExercise(trainingDay); if(trainingExercises != null) { foreach (var trainingExercise in trainingExercises) { //Convert user Unit to viewer unit if (trainingExercise.TrainingExerciseSets != null) { foreach (var set in trainingExercise.TrainingExerciseSets) set.Weight = Utils.TransformWeightToUnitSytem(userUnit, viewerUnit, set.Weight); } if (trainingExerciseViewModels == null) trainingExerciseViewModels = new List<TrainingExerciseViewModel>(); trainingExerciseViewModels.Add(TrainingViewModelTransformer.TrainingExerciseToViewModel(trainingExercise, _bodyExercisesService)); } } } } } ViewBag.UserIdViewer = userIdViewer; ViewBag.CurrentDayOfWeek = currentDayOfWeek; ViewBag.ViewerUnit = viewerUnit; ViewBag.Editable = userId == userIdViewer; return View(new Tuple<TrainingWeekViewModel, List<TrainingDayViewModel>, List<TrainingExerciseViewModel>>(trainingWeekViewModel, trainingDayViewModels, trainingExerciseViewModels)); }
public List <TrainingWeek> UpdateTrainingWeekList(List <TrainingWeek> trainingWeekList, TrainingWeekScenario trainingWeekScenario) { if (trainingWeekList == null) { return(null); } List <TrainingWeek> result = new List <TrainingWeek>(); BeginTransaction(); try { foreach (var trainingWeek in trainingWeekList) { result.Add(GetTrainingWeekManager().UpdateTrainingWeek(trainingWeek, trainingWeekScenario)); } CommitTransaction(); } catch (Exception exception) { RollbackTransaction(); throw; } finally { EndTransaction(); } return(result); }
private async Task ViewTrainingWeekActionAsync(BindingTrainingWeek bindingTrainingWeek) { try { if (bindingTrainingWeek != null && bindingTrainingWeek.TrainingWeek != null) { TrainingWeek trainingWeek = null; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true }; try { //load server data (only header) trainingWeek = await TrainingWeekWebService.GetTrainingWeekAsync(bindingTrainingWeek.TrainingWeek, false); if (trainingWeek != null) { if (trainingWeek.ModificationDate != bindingTrainingWeek.TrainingWeek.ModificationDate) { //load server data (full) trainingWeek = await TrainingWeekWebService.GetTrainingWeekAsync(bindingTrainingWeek.TrainingWeek, true); if (trainingWeek != null) { //Save data on local database _trainingWeekService.UpdateTrainingWeek(trainingWeek, trainingWeekScenario); } } else { trainingWeek = null; // force reload local data } } } catch { // Unable to retreive local data ILogger.Instance.Info("Unable to retreive TrainingWeek on server"); trainingWeek = null; } if (trainingWeek == null) { //load local data trainingWeek = _trainingWeekService.GetTrainingWeek(bindingTrainingWeek.TrainingWeek, trainingWeekScenario); } if (trainingWeek != null) { //Display view model if (await TrainingWeekViewModel.ShowAsync(trainingWeek, this)) { //Refresh data RetreiveLocalData(); SynchronizeData(); } } } } catch (Exception except) { await _userDialog.AlertAsync(except.Message, Translation.Get(TRS.ERROR), Translation.Get(TRS.OK)); } }
public List<TrainingWeek> FindTrainingWeek(TrainingWeekCriteria trainingWeekCriteria, TrainingWeekScenario trainingWeekScenario) { return FindTrainingWeek(new CriteriaList<TrainingWeekCriteria>() { trainingWeekCriteria }, trainingWeekScenario); }
public IActionResult CreateTrainingDay(TrainingDayViewModel viewModel) { if (ModelState.IsValid) { if (string.IsNullOrWhiteSpace(viewModel.UserId) || viewModel.Year == 0 || viewModel.WeekOfYear == 0 || viewModel.DayOfWeek < 0 || viewModel.DayOfWeek > 6 || SessionUserId != viewModel.UserId) return View(viewModel); //Verify trainingWeek exist var trainingWeekKey = new TrainingWeekKey() { UserId = viewModel.UserId, Year = viewModel.Year, WeekOfYear = viewModel.WeekOfYear }; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false }; var trainingWeek = _trainingWeeksService.GetTrainingWeek(trainingWeekKey, trainingWeekScenario); if (trainingWeek == null) { ModelState.AddModelError(string.Empty, string.Format(Translation.P0_NOT_EXIST, Translation.TRAINING_WEEK)); return View(viewModel); } //Verify valid week of year if (viewModel.WeekOfYear > 0 && viewModel.WeekOfYear <= 52) { var trainingDay = ControllerUtils.TransformViewModelToTrainingDay(viewModel); trainingDay = _trainingDaysService.CreateTrainingDay(trainingDay); if (trainingDay != null) { return RedirectToAction("View", new { userId = trainingDay.UserId, year = trainingDay.Year, weekOfYear = trainingDay.WeekOfYear, dayOfWeekSelected = trainingDay.DayOfWeek }); } } } return View(viewModel); }
public IActionResult Create(TrainingWeekViewModel viewModel) { if (ModelState.IsValid) { if (string.IsNullOrWhiteSpace(viewModel.UserId) || viewModel.Year == 0 || viewModel.Year == 0 || SessionUserId != viewModel.UserId) return View(viewModel); //Verify valide week of year if (viewModel.WeekOfYear > 0 && viewModel.WeekOfYear <= 52 && (viewModel.Unit == (int)TUnitType.Imperial || viewModel.Unit == (int)TUnitType.Metric)) { var trainingWeek = TransformViewModelToTrainingWeek(viewModel); var trainingWeekKey = new TrainingWeekKey() { UserId = trainingWeek.UserId, Year = trainingWeek.Year, WeekOfYear = trainingWeek.WeekOfYear }; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false }; var existTrainingWeek = _trainingWeeksService.GetTrainingWeek(trainingWeekKey, trainingWeekScenario); if (existTrainingWeek != null) { ModelState.AddModelError(string.Empty, string.Format(Translation.P0_ALREADY_EXIST, Translation.TRAINING_WEEK)); return View(viewModel); } trainingWeek = _trainingWeeksService.CreateTrainingWeek(trainingWeek); if (trainingWeek == null) { ModelState.AddModelError(string.Empty, Translation.IMPOSSIBLE_TO_CREATE_NEW_TRAINING_JOURNAL); return View(viewModel); } return RedirectToAction("View", new { userId = trainingWeek.UserId, year = trainingWeek.Year, weekOfYear = trainingWeek.WeekOfYear }); } } return View(viewModel); }
public List<TrainingWeek> FindTrainingWeek(CriteriaList<TrainingWeekCriteria> trainingWeekCriteriaList, TrainingWeekScenario trainingWeekScenario) { return GetTrainingWeekManager().FindTrainingWeek(trainingWeekCriteriaList, trainingWeekScenario); }
public IActionResult Get(TrainingWeekKey trainingWeekKey, Boolean manageDay = false) { try { if (trainingWeekKey == null) return BadRequest(); var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = manageDay }; if (manageDay) { trainingWeekScenario.TrainingDayScenario = new TrainingDayScenario() { ManageExercise = true }; } var trainingWeek = _trainingWeeksService.GetTrainingWeek(trainingWeekKey, trainingWeekScenario); return new OkObjectResult(trainingWeek); } catch(Exception exception) { return BadRequest(new WebApiException("Error", exception)); } }
internal TrainingWeek UpdateTrainingWeek(TrainingWeek trainingWeek, TrainingWeekScenario trainingWeekScenario) { TrainingWeek trainingWeekResult = null; trainingWeekResult = _trainingWeekModule.Update(trainingWeek); if (trainingWeekScenario != null && trainingWeekScenario.ManageTrainingDay) { var trainingDayScenario = new TrainingDayScenario() { ManageExercise = true }; var trainingDayCriteria = new TrainingDayCriteria() { UserId = new StringCriteria() { Equal = trainingWeek.UserId }, Year = new IntegerCriteria() { Equal = trainingWeek.Year }, WeekOfYear = new IntegerCriteria() { Equal = trainingWeek.WeekOfYear } }; var trainingDaysDb = _trainingDaysService.FindTrainingDay(trainingDayCriteria, trainingDayScenario); if (trainingDaysDb != null && trainingDaysDb.Count > 0) { foreach (var trainingDayDb in trainingDaysDb) _trainingDaysService.DeleteTrainingDay(trainingDayDb); } if (trainingWeek.TrainingDays != null) { trainingWeekResult.TrainingDays = new List<TrainingDay>(); foreach (var trainingDay in trainingWeek.TrainingDays) { trainingWeekResult.TrainingDays.Add(_trainingDaysService.UpdateTrainingDay(trainingDay, trainingWeekScenario.TrainingDayScenario)); } } } return trainingWeekResult; }
public IActionResult Delete(string userId, int year, int weekOfYear, bool confirmation = false) { if (confirmation) { var actionResult = RedirectToAction("View", "TrainingJournal", new { Area = "User" }); if (string.IsNullOrWhiteSpace(userId) || year == 0 || weekOfYear == 0 || SessionUserId != userId) return actionResult; var key = new TrainingWeekKey() { UserId = userId, Year = year, WeekOfYear = weekOfYear }; var trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false }; var trainingWeek = _trainingWeeksService.GetTrainingWeek(key, trainingWeekScenario); if (trainingWeek == null) return actionResult; _trainingWeeksService.DeleteTrainingWeek(trainingWeek); return actionResult; } else { string title = Translation.TRAINING_WEEK; string message = Translation.ARE_YOU_SURE_YOU_WANNA_DELETE_THIS_ELEMENT_PI; string returnUrlYes = Url.Action("Delete", "TrainingJournal", new { Area = "User", userId = userId, year = year, weekOfYear = weekOfYear, confirmation = true }); string returnUrlNo = Url.Action("View", "TrainingJournal", new { Area = "User" }); return RedirectToAction("Confirm", "Message", new { Area = "Site", title = title, message = message, returnUrlYes = returnUrlYes, returnUrlNo = returnUrlNo }); } }
public static async Task <TrainingWeek> UpdateTrainingWeekAsync(TrainingWeek trainingWeek, TrainingWeekScenario trainingWeekScenario) { var trainingWeekWithScenario = new TrainingWeekWithScenario() { TrainingWeek = trainingWeek, TrainingWeekScenario = trainingWeekScenario }; return(await HttpConnector.Instance.PostAsync <TrainingWeekWithScenario, TrainingWeek> ("Api/TrainingWeeks/Update", trainingWeekWithScenario)); }
public static async Task <bool> SynchronizeTrainingWeeksAsync(SQLiteConnection dbContext) { bool result = false; try { //Synchronize TrainingWeek with server (with trainingday and exercise) var criteria = new TrainingWeekCriteria(); criteria.UserId = new StringCriteria() { Equal = UserData.Instance.UserInfo.UserId }; TrainingWeekScenario trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = false }; var trainingWeekService = new TrainingWeekService(dbContext); //retreive local data var localTrainingWeekList = trainingWeekService.FindTrainingWeek(criteria, trainingWeekScenario); //retreive online data var criteriaList = new CriteriaList <TrainingWeekCriteria>() { criteria }; var onlineTrainingWeekList = await TrainingWeekWebService.FindTrainingWeeksAsync(criteriaList, trainingWeekScenario); bool found; //Delete local data if not found on server if (localTrainingWeekList != null) { var deletedTrainingWeekList = new List <TrainingWeek>(); foreach (var localTrainingWeek in localTrainingWeekList) { found = false; if (onlineTrainingWeekList != null) { foreach (var onlineTrainingWeek in onlineTrainingWeekList) { if (TrainingWeekKey.IsEqualByKey(onlineTrainingWeek, localTrainingWeek)) { found = true; break; } } } if (!found) { deletedTrainingWeekList.Add(localTrainingWeek); } } if (deletedTrainingWeekList.Count > 0) { var deletedTrainingWeekKeyList = new List <TrainingWeekKey>(); foreach (var key in deletedTrainingWeekList) { deletedTrainingWeekKeyList.Add(key); } //Delete in local database trainingWeekService.DeleteTrainingWeekList(deletedTrainingWeekKeyList); foreach (var deleteTrainingWeek in deletedTrainingWeekList) { localTrainingWeekList.Remove(deleteTrainingWeek); } } } //if modification date online != local, get full trainingWeek online data and save them on local database var synchronizeTrainingWeekList = new List <TrainingWeek>(); if (onlineTrainingWeekList != null) { foreach (var onlineTrainingWeek in onlineTrainingWeekList) { found = false; if (localTrainingWeekList != null) { foreach (var localTrainingWeek in localTrainingWeekList) { //Same trainingWeek if (TrainingWeekKey.IsEqualByKey(onlineTrainingWeek, localTrainingWeek)) { if (onlineTrainingWeek.ModificationDate.ToUniversalTime() != localTrainingWeek.ModificationDate.ToUniversalTime()) //ToUniversalTime for security... { synchronizeTrainingWeekList.Add(onlineTrainingWeek); } found = true; break; } } } if (!found) { synchronizeTrainingWeekList.Add(onlineTrainingWeek); } } } //Synchronize all trainingWeek data trainingWeekScenario = new TrainingWeekScenario() { ManageTrainingDay = true, TrainingDayScenario = new TrainingDayScenario() { ManageExercise = true } }; if (synchronizeTrainingWeekList.Count > 0) { criteriaList.Clear(); foreach (var trainingWeek in synchronizeTrainingWeekList) { criteria = new TrainingWeekCriteria(); criteria.UserId = new StringCriteria() { Equal = trainingWeek.UserId }; criteria.Year = new IntegerCriteria() { Equal = trainingWeek.Year }; criteria.WeekOfYear = new IntegerCriteria() { Equal = trainingWeek.WeekOfYear }; criteriaList.Add(criteria); } onlineTrainingWeekList = await TrainingWeekWebService.FindTrainingWeeksAsync(criteriaList, trainingWeekScenario); if (onlineTrainingWeekList != null && onlineTrainingWeekList.Count > 0) { trainingWeekService.UpdateTrainingWeekList(onlineTrainingWeekList, trainingWeekScenario); } } result = true; } catch (Exception except) { ILogger.Instance.Error("Unable to synchronize training weeks", except); } return(result); }