Example #1
0
        public static UserApiGetResponse FromUser(User user, IEnumerable <Invitation> invitations = null)
        {
            var response = new UserApiGetResponse()
            {
                CurrentUser = user.Id
            };

            response.Families = user.Families?.Select(f => ApiFamily.FromFamily(f)).ToArray() ?? new ApiFamily[] { };

            response.Users = user.Families
                             ?.SelectMany(f => f.Members)
                             .Concat(new [] { user })
                             .Distinct()
                             .Select(u => ApiUser.FromUser(u))
                             .ToArray()
                             ?? new ApiUser[] { };

            response.Invitations = invitations != null
         ? invitations.Select(i => ApiInvitation.FromInvitation(i)).ToArray()
         : new ApiInvitation[]
            {
            };

            response.Lists = user.Families
                             ?.SelectMany(f => f.Lists ?? new ShoppingList[] { })
                             .Distinct()
                             .Select(l => ApiList.FromList(l))
                             .ToArray()
                             ?? new ApiList[] { };

            return(response);
        }
Example #2
0
        public UserApiGetResponse Get()
        {
            var email        = userInformation.GetUserEmail();
            var existingUser = context.GetUserByEmail(email);

            if (existingUser == null)
            {
                var name    = userInformation.GetUserName();
                var picture = userInformation.GetPicture();
                existingUser = new User {
                    Name = name, Email = email, Picture = picture
                };
                context.Users.Add(existingUser);
                context.SaveChanges();
            }

            var invitations = context.GetInvitationsForUser(existingUser);

            var response = UserApiGetResponse.FromUser(existingUser, invitations);

            return(response);
        }