public async Task UpdateUserAvatarAsync(ICollection <DynamicAvatarLayer> selectionLayers) { var activeUserId = GetActiveUserId(); var layers = await _dynamicAvatarLayerRepository.GetAllAsync(GetCurrentSiteId()); var elementList = new List <int>(); foreach (var layer in layers) { var selection = selectionLayers.Where(_ => _.Id == layer.Id).FirstOrDefault(); if (selection != default(DynamicAvatarLayer)) { var element = await _dynamicAvatarElementRepository.GetByItemAndColorAsync( selection.SelectedItem.Value, selection.SelectedColor); if (element != default(DynamicAvatarElement) && element.DynamicAvatarItem.Unlockable == false) { elementList.Add(element.Id); } else { _logger.LogWarning($"User {activeUserId} can't select item {selection.SelectedItem.Value} and color {selection.SelectedColor} for layer {layer.Id}."); throw new GraException($"Invalid selection for {layer.Name}"); } } else if (!layer.CanBeEmpty) { _logger.LogWarning($"User {activeUserId} can't have an empty selection for layer {layer.Id}."); throw new GraException($"A {layer.Name} must be selected"); } } await _dynamicAvatarElementRepository.SetUserAvatarAsync(activeUserId, elementList); }
public async Task <IEnumerable <DynamicAvatarLayer> > GetLayersAsync() { VerifyManagementPermission(); return(await _dynamicAvatarLayerRepository.GetAllAsync(GetCurrentSiteId())); }