Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public async Task <IEnumerable <DynamicAvatarLayer> > GetLayersAsync()
 {
     VerifyManagementPermission();
     return(await _dynamicAvatarLayerRepository.GetAllAsync(GetCurrentSiteId()));
 }