Ejemplo n.º 1
0
        public async Task <OlympiaUser> GetUserByUsernameAsync(string username)
        {
            if (string.IsNullOrEmpty(username))
            {
                return(null);
            }

            OlympiaUser userFromDb = null;

            await Task.Run(() =>
            {
                userFromDb = this.context
                             .Users
                             .Include(x => x.Clients)
                             .Include(x => x.Trainer)
                             .Include(x => x.ShoppingCart)
                             .Include(x => x.FitnessPlan)
                             .ThenInclude(x => x.Owner)
                             .Include(x => x.Articles)
                             .Include(x => x.Address)
                             .SingleOrDefault(user => user.UserName == username);
            });

            return(userFromDb);
        }
Ejemplo n.º 2
0
        private async Task AddMessageToDbAsync(string message, OlympiaUser sender, OlympiaUser receiver)
        {
            var currentMessage = new Message()
            {
                Content = message, ReceiverId = receiver.Id
            };

            sender.Messages.Add(currentMessage);
            this.context.Update(sender);
            await this.context.SaveChangesAsync();
        }
Ejemplo n.º 3
0
        private async Task LoadPreviousMessagesAsync(OlympiaUser sender, OlympiaUser receiver)
        {
            List <Message> messages = new List <Message>(sender.Messages.Where(x => x.ReceiverId == receiver.Id));

            messages = messages.Concat(receiver.Messages.Where(x => x.ReceiverId == sender.Id)).OrderByDescending(x => x.Id).ToList();

            foreach (var message in messages.Take(5).OrderBy(x => x.Id))
            {
                await this.Clients.User(message.SenderId).SendAsync("LoadMessage", message.Sender.UserName, message.Content);

                await this.Clients.User(message.ReceiverId).SendAsync("LoadMessage", message.Sender.UserName, message.Content);
            }
        }
Ejemplo n.º 4
0
        private async Task AddRootAdminIfDoesNotExistAsync()
        {
            if (!this.context.Users.Any(user => user.UserName == AdminUsername))
            {
                var god = new OlympiaUser("God", "*****@*****.**", "God God");
                await this.userManager.CreateAsync(god, password : "******");

                god.ShoppingCart.UserId = god.Id;
                await this.userManager.AddToRoleAsync(god, GlobalConstants.AdministratorRoleName);

                god.Address.Location = "Home";
                this.context.Update(god);
                await this.context.SaveChangesAsync();
            }
        }
Ejemplo n.º 5
0
        private async Task LoadSharedKeyAndQrCodeUriAsync(OlympiaUser user)
        {
            // Load the authenticator key & QR code URI to display on the form
            var unformattedKey = await this.userManager.GetAuthenticatorKeyAsync(user);

            if (string.IsNullOrEmpty(unformattedKey))
            {
                await this.userManager.ResetAuthenticatorKeyAsync(user);

                unformattedKey = await this.userManager.GetAuthenticatorKeyAsync(user);
            }

            this.SharedKey = this.FormatKey(unformattedKey);

            var email = await this.userManager.GetEmailAsync(user);

            this.AuthenticatorUri = this.GenerateQrCodeUri(email, unformattedKey);
        }
Ejemplo n.º 6
0
        public async Task <OlympiaUser> GetUsersTrainerAsync(string username)
        {
            if (string.IsNullOrEmpty(username))
            {
                return(null);
            }

            OlympiaUser trainer = null;

            await Task.Run(() =>
            {
                trainer = this.context
                          .Users
                          .Include(user => user.Trainer)
                          .SingleOrDefault(x => x.UserName == username);
            });

            return(trainer.Trainer);
        }
Ejemplo n.º 7
0
        public async Task <bool> BecomeTrainerAsync(ClientToTrainerBindingModel model, string username)
        {
            OlympiaUser realUser = this.context.Users.SingleOrDefault(user => user.UserName == username);

            realUser.Age         = model.Age;
            realUser.Description = model.Description;
            realUser.Email       = model.Email;
            realUser.FullName    = model.FullName;
            realUser.Weight      = model.Weight;
            realUser.Height      = model.Height;

            if (model.ProfilePictureUrl != null)
            {
                var url = MyCloudinary.UploadImage(model.ProfilePictureUrl, model.Username);
                realUser.ProfilePicturImgUrl = url ?? Constants.CloudinaryInvalidUrl;
            }

            this.context.Update(realUser);
            await this.context.SaveChangesAsync();

            await this.userManager.UpdateSecurityStampAsync(realUser);

            var userRemovedFromRole = await this.userManager.RemoveFromRoleAsync(realUser, GlobalConstants.ClientRoleName);

            var roleHasChanged = await this.userManager.AddToRoleAsync(realUser, GlobalConstants.TrainerRoleName);

            if (!roleHasChanged.Succeeded)
            {
                return(false);
            }

            await this.userManager.UpdateAsync(realUser);

            this.context.Update(realUser);
            await this.context.SaveChangesAsync();

            var result = await this.userManager.IsInRoleAsync(realUser, GlobalConstants.TrainerRoleName);

            return(result);
        }