Skip to content

Commit

Permalink
Added moved Updatefrom and updateWeekdaycolors to SettingService
Browse files Browse the repository at this point in the history
  • Loading branch information
EMojoKrogh committed Nov 22, 2023
1 parent e7e1b6a commit 2249cc9
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 45 deletions.
4 changes: 3 additions & 1 deletion GirafAPI/Controllers/UserController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using GirafEntities.WeekPlanner.DTOs;
using GirafRepositories;
using GirafRepositories.Interfaces;
using GirafServices;
using GirafServices.Authentication;
using GirafServices.User;
using Microsoft.AspNetCore.Authorization;
Expand Down Expand Up @@ -596,7 +597,8 @@ public async Task<ActionResult> UpdateUserSettings(string id, [FromBody] Setting
return BadRequest(new ErrorResponse(ErrorCode.InvalidHexValues, "Invalid hex values"));
}

user.Settings.UpdateFrom(options);
var settingsChanger = new SettingService();
settingsChanger.UpdateFrom(options, user);
// lets update the weekday colours

await _girafUserRepository.SaveChangesAsync();
Expand Down
43 changes: 0 additions & 43 deletions GirafEntities/Settings/Setting.cs
Original file line number Diff line number Diff line change
Expand Up @@ -118,49 +118,6 @@ public class Setting
/// <value>The week day colors.</value>
public List<WeekDayColor> WeekDayColors { get; set; }

/// <summary>
/// Updates all settings based on a DTO
/// </summary>
/// <param name="newOptions">The DTO containing new settings</param>
public void UpdateFrom(SettingDTO newOptions)
{
Orientation = newOptions?.Orientation ?? Orientation;
CompleteMark = newOptions?.CompleteMark ?? CompleteMark;
CancelMark = newOptions?.CancelMark ?? CancelMark;
DefaultTimer = newOptions?.DefaultTimer ?? DefaultTimer;
TimerSeconds = newOptions?.TimerSeconds ?? TimerSeconds;
ActivitiesCount = newOptions?.ActivitiesCount ?? ActivitiesCount;
Theme = newOptions?.Theme ?? Theme;
NrOfDaysToDisplayPortrait = newOptions?.NrOfDaysToDisplayPortrait ?? NrOfDaysToDisplayPortrait;
DisplayDaysRelativePortrait = newOptions?.DisplayDaysRelativePortrait ?? DisplayDaysRelativePortrait;
NrOfDaysToDisplayLandscape = newOptions?.NrOfDaysToDisplayLandscape ?? NrOfDaysToDisplayLandscape;
DisplayDaysRelativeLandscape = newOptions?.DisplayDaysRelativeLandscape ?? DisplayDaysRelativeLandscape;
GreyScale = newOptions?.GreyScale ?? GreyScale;
LockTimerControl = newOptions?.LockTimerControl ?? LockTimerControl;
PictogramText = newOptions?.PictogramText ?? PictogramText;
ShowPopup = newOptions?.ShowPopup ?? ShowPopup;
NrOfActivitiesToDisplay = newOptions?.NrOfActivitiesToDisplay ?? NrOfActivitiesToDisplay;
ShowOnlyActivities = newOptions?.ShowOnlyActivities ?? ShowOnlyActivities;
ShowSettingsForCitizen = newOptions?.ShowSettingsForCitizen ?? ShowSettingsForCitizen;
if (newOptions.WeekDayColors != null)
updateWeekDayColors(newOptions.WeekDayColors);
}

private void updateWeekDayColors(List<WeekDayColorDTO> weekDayColors)
{
if (WeekDayColors != null)
{
foreach (var weekDayColor in weekDayColors)
{
var weekDayColorToUpdate = WeekDayColors.FirstOrDefault(wdc => wdc.Day == weekDayColor.Day);
if (weekDayColorToUpdate != null)
{
weekDayColorToUpdate.HexColor = weekDayColor.HexColor;
}
}
}
}

/// <summary>
/// Initializes WeekDayColors.
/// </summary>
Expand Down
48 changes: 47 additions & 1 deletion GirafServices/SettingService.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,52 @@
namespace GirafServices
using GirafEntities.Settings.DTOs;
using GirafEntities.WeekPlanner.DTOs;
using GirafEntities.User;

namespace GirafServices
{
public class SettingService
{
/// <summary>
/// Updates all settings based on a DTO
/// </summary>
/// <param name="newOptions">The DTO containing new settings</param>
public void UpdateFrom(SettingDTO newSetting, GirafUser user)
{
user.Settings.Orientation = newSetting?.Orientation ?? user.Settings.Orientation;
user.Settings.CompleteMark = newSetting?.CompleteMark ?? user.Settings.CompleteMark;
user.Settings.CancelMark = newSetting?.CancelMark ?? user.Settings.CancelMark;
user.Settings.DefaultTimer = newSetting?.DefaultTimer ?? user.Settings.DefaultTimer;
user.Settings.TimerSeconds = newSetting?.TimerSeconds ?? user.Settings.TimerSeconds;
user.Settings.ActivitiesCount = newSetting?.ActivitiesCount ?? user.Settings.ActivitiesCount;
user.Settings.Theme = newSetting?.Theme ?? user.Settings.Theme;
user.Settings.NrOfDaysToDisplayPortrait = newSetting?.NrOfDaysToDisplayPortrait ?? user.Settings.NrOfDaysToDisplayPortrait;
user.Settings.DisplayDaysRelativePortrait = newSetting?.DisplayDaysRelativePortrait ?? user.Settings.DisplayDaysRelativePortrait;
user.Settings.NrOfDaysToDisplayLandscape = newSetting?.NrOfDaysToDisplayLandscape ?? user.Settings.NrOfDaysToDisplayLandscape;
user.Settings.DisplayDaysRelativeLandscape = newSetting?.DisplayDaysRelativeLandscape ?? user.Settings.DisplayDaysRelativeLandscape;
user.Settings.GreyScale = newSetting?.GreyScale ?? user.Settings.GreyScale;
user.Settings.LockTimerControl = newSetting?.LockTimerControl ?? user.Settings.LockTimerControl;
user.Settings.PictogramText = newSetting?.PictogramText ?? user.Settings.PictogramText;
user.Settings.ShowPopup = newSetting?.ShowPopup ?? user.Settings.ShowPopup;
user.Settings.NrOfActivitiesToDisplay = newSetting?.NrOfActivitiesToDisplay ?? user.Settings.NrOfActivitiesToDisplay;
user.Settings.ShowOnlyActivities = newSetting?.ShowOnlyActivities ?? user.Settings.ShowOnlyActivities;
user.Settings.ShowSettingsForCitizen = newSetting?.ShowSettingsForCitizen ?? user.Settings .ShowSettingsForCitizen;
if (newSetting.WeekDayColors != null)
UpdateWeekDayColors(newSetting.WeekDayColors, user);
}

private void UpdateWeekDayColors(List<WeekDayColorDTO> weekDayColors, GirafUser user)
{
if (user.Settings.WeekDayColors != null)
{
foreach (var weekDayColor in weekDayColors)
{
var weekDayColorToUpdate = user.Settings.WeekDayColors.FirstOrDefault(wdc => wdc.Day == weekDayColor.Day);
if (weekDayColorToUpdate != null)
{
weekDayColorToUpdate.HexColor = weekDayColor.HexColor;
}
}
}
}
}
}

0 comments on commit 2249cc9

Please sign in to comment.