Exemplo n.º 1
0
        public static async Task <Dictionary <int, UserAvatarOutput> > GetAvatars(BitcornGameContext dbContext, int[] users, string platform)
        {
            var avatarConfig = await dbContext.AvatarConfig.FirstOrDefaultAsync(c => c.Platform == platform);

            var userAvatars = await dbContext.UserAvatar.Where(u => users.Contains(u.UserId)).ToDictionaryAsync(x => x.UserId, x => x);

            int adds = 0;

            for (int i = 0; i < users.Length; i++)
            {
                if (!userAvatars.ContainsKey(users[i]))
                {
                    var userAvatar = new UserAvatar()
                    {
                        AvatarAddress = avatarConfig.DefaultAvatar,
                        UserId        = users[i]
                    };
                    dbContext.Add(userAvatar);
                    userAvatars.Add(users[i], userAvatar);
                    adds++;
                }
            }

            if (adds > 0)
            {
                await dbContext.SaveAsync();
            }

            return(userAvatars.Values.Select(x => new UserAvatarOutput()
            {
                UserId = x.UserId,
                Catalog = avatarConfig.Catalog,
                Avatar = x.AvatarAddress,
                AvailableAvatars = new string[] { }
            }).ToDictionary(x => x.UserId, x => x));
            //var output = new Dictionary<int, UserAvatarOutput>();

            /*
             * if (userAvatar == null)
             * {
             *  userAvatar = new UserAvatar()
             *  {
             *      AvatarAddress = avatarConfig.DefaultAvatar,
             *      UserId = user.UserId
             *  };
             *  dbContext.Add(userAvatar);
             *  await dbContext.SaveAsync();
             * }
             *
             * return new UserAvatarOutput()
             * {
             *  Catalog = avatarConfig.Catalog,
             *  Avatar = userAvatar.AvatarAddress,
             *  AvailableAvatars = new string[] { }
             * };
             */
        }
Exemplo n.º 2
0
        public static async Task <UserAvatarOutput> GetAvatar(BitcornGameContext dbContext, User user, string platform)
        {
            var avatarConfig = await dbContext.AvatarConfig.FirstOrDefaultAsync(c => c.Platform == platform);

            var userAvatar = await dbContext.UserAvatar.FirstOrDefaultAsync(u => u.UserId == user.UserId);

            if (userAvatar == null)
            {
                userAvatar = new UserAvatar()
                {
                    AvatarAddress = avatarConfig.DefaultAvatar,
                    UserId        = user.UserId
                };
                dbContext.Add(userAvatar);
                await dbContext.SaveAsync();
            }

            return(new UserAvatarOutput()
            {
                Catalog = avatarConfig.Catalog,
                Avatar = userAvatar.AvatarAddress,
                AvailableAvatars = new string[] { }
            });
        }
Exemplo n.º 3
0
 public UserAvatarController(BitcornGameContext dbContext)
 {
     this._dbContext = dbContext;
 }