Пример #1
0
        public ViewModels.Team[] GetManagedTeams(string userName)
        {
            DataModels.User   requestingUser = this.context.User.Where(x => x.EmailAddress == userName).FirstOrDefault();
            DataModels.Team[] teams          = this.context.Team.Include(x => x.TeamManager)
                                               .Include(x => x.TeamMembers).ThenInclude(x => x.Role)
                                               .Where(x => x.TeamManager == requestingUser).ToArray();
            List <ViewModels.Team> viewTeams = new List <ViewModels.Team>();

            foreach (DataModels.Team team in teams)
            {
                ViewModels.Team viewTeam = new ViewModels.Team();
                viewTeam.Name        = team.Name;
                viewTeam.Description = team.Description;
                viewTeam.ID          = team.PublicIdentifier;
                List <TeamMember> members = new List <TeamMember>();
                foreach (DataModels.User user in team.TeamMembers)
                {
                    TeamMember member = new TeamMember();
                    member.Name             = user.LastName + ", " + user.FirstName;
                    member.PublicIdentifier = user.PublicIdentifier;
                    member.Role             = user.Role.Name;
                    members.Add(member);
                }
                viewTeam.TeamMembers = members.ToArray();
                viewTeams.Add(viewTeam);
            }

            return(viewTeams.ToArray());
        }
Пример #2
0
        public ApiResponse <object> RemoveSchedule(DataModels.User dataUser, int scheduleId)
        {
            var scheduleInfo =
                (from s in _dbContext.Schedules
                 join sr in _dbContext.ScheduleRows on s.Id equals sr.ScheduleId into _sr
                 join ma in _dbContext.MixAudios on s.Id equals ma.ScheduleId into _ma
                 where s.Id == scheduleId
                 select new
            {
                Schedule = s,
                ScheduleRows = _sr,
                MixAudios = _ma,
            }).FirstOrDefault();

            if (scheduleInfo == null)
            {
                return(new ApiResponse <object>("Schedule not found"));
            }

            if (scheduleInfo.Schedule.UserId != dataUser.Id)
            {
                return(new ApiResponse <object>("You can remove only your schedule"));
            }

            _dbContext.MixAudios.RemoveRange(scheduleInfo.MixAudios);
            _dbContext.ScheduleRows.RemoveRange(scheduleInfo.ScheduleRows);
            _dbContext.Schedules.Remove(scheduleInfo.Schedule);

            _dbContext.SaveChanges();

            return(new ApiResponse <object>()
            {
                Ok = true
            });
        }
        public IActionResult Post([FromBody] AuthenticateRequest request)
        {
            AuthenticateResponse response = new AuthenticateResponse();

            DataModels.User user = _context.User.Include(x => x.Role).Where(x => x.EmailAddress == request.username).FirstOrDefault();

            if (user == null)
            {
                return(new ObjectResult(response));
            }

            if (!hashUtility.CheckMatch(user.PasswordHash, request.password))
            {
                return(new ObjectResult(response));
            }
            response.token  = jwtUtilities.GenereateJwtToken(user);
            response.userId = user.PublicIdentifier;
            if (request.getRefreshToken)
            {
                response.refreshToken       = jwtUtilities.GenerateRefreshToken(user);
                user.RefreshToken           = response.refreshToken;
                user.RefreshTokenExpiration = DateTime.Now.AddMonths(3);
                this._context.User.Update(user);
                this._context.SaveChanges();
            }
            return(new ObjectResult(response));
        }
Пример #4
0
        public ViewModels.User GetUser(Guid id)
        {
            try
            {
                DataModels.User dbUser = this.context.User.Include(x => x.Site).Include(x => x.Role).Where(x => x.PublicIdentifier == id).FirstOrDefault();
                if (dbUser == null)
                {
                    this.ValidationFailed();
                }

                this.ValidationPassed();
                ViewModels.User user = new ViewModels.User();
                user.userId       = dbUser.PublicIdentifier;
                user.EmailAddress = dbUser.EmailAddress;
                user.FirstName    = dbUser.FirstName;
                user.LastName     = dbUser.LastName;
                user.UserSite     = dbUser.Site.PublicIdentifier;
                SetSecurityParams(user, dbUser);
                return(user);
            }
            catch (Exception e)
            {
                this.SetError(e.Message);
                return(null);
            }
        }
Пример #5
0
        private void SetSecurityParams(ViewModels.User user, DataModels.User dbUser)
        {
            if (dbUser.Role.Name == "Site Administrator")
            {
                user.IsSiteAdmin  = true;
                user.IsManager    = true;
                user.IsTeamLeader = true;
                return;
            }

            if (dbUser.Role.Name == "Manager")
            {
                user.IsSiteAdmin  = false;
                user.IsManager    = true;
                user.IsTeamLeader = true;
                return;
            }

            if (dbUser.Role.Name == "Team Leader")
            {
                user.IsSiteAdmin  = false;
                user.IsManager    = false;
                user.IsTeamLeader = true;
                return;
            }
        }
Пример #6
0
 internal Address Map(Address tmp)
 {
     this.Street          = tmp.Street;
     this.Ø_UserAddresses = tmp.Ø_UserAddresses;
     this.Ø_Licenses      = tmp.Ø_Licenses;
     this.Ø_Users         = tmp.Ø_Users;
     return(this);
 }
            public Task <IEnumerable <LookupDto> > Handle(SyncUsersCommand request, CancellationToken cancellationToken)
            {
                var users = request.Users ?? new List <LookupDto>();

                foreach (var appUser in users)
                {
                    var             localUser = _db.User.FirstOrDefault(u => u.Id == appUser.Id);
                    DataModels.User user      = new DataModels.User()
                    {
                        Id               = appUser.Id,
                        Name             = appUser.Name,
                        IsActive         = appUser.IsActive,
                        CreatedDate      = appUser.CreatedDate,
                        CreatedBy        = appUser.CreatedBy,
                        LastModifiedDate = appUser.LastModifiedDate,
                        LastModifiedBy   = appUser.LastModifiedBy
                    };

                    if (localUser == null)
                    {
                        //if user doesn't exist in database, insert it
                        _db.User.Add(user);
                    }
                    else if (appUser.LastModifiedDate > localUser.LastModifiedDate)
                    {
                        //if the app user is newer, remove the old user and add the new to db
                        _db.User.Remove(localUser);
                        _db.User.Add(user);
                    }
                    else
                    {
                        appUser.Name             = localUser.Name;
                        appUser.IsActive         = localUser.IsActive;
                        appUser.CreatedDate      = localUser.CreatedDate;
                        appUser.CreatedBy        = localUser.CreatedBy;
                        appUser.LastModifiedDate = localUser.LastModifiedDate;
                        appUser.LastModifiedBy   = localUser.LastModifiedBy;
                    }
                }

                var appUserIDs       = users.Select(u => u.Id).ToList();
                var uniqueLocalUsers = _db.User.Where(u => !appUserIDs.Contains(u.Id)).Select(u => new LookupDto()
                {
                    Id               = u.Id,
                    Name             = u.Name,
                    IsActive         = u.IsActive,
                    CreatedDate      = u.CreatedDate,
                    CreatedBy        = u.CreatedBy,
                    LastModifiedDate = u.LastModifiedDate,
                    LastModifiedBy   = u.LastModifiedBy
                }).ToList();

                users.AddRange(uniqueLocalUsers);
                _db.SaveChanges();

                return(Task.FromResult <IEnumerable <LookupDto> >(users));
            }
Пример #8
0
 public static ApiModels.User GetUser(DataModels.User user)
 {
     return(new ApiModels.User()
     {
         Id = user.Id,
         FirstName = user.FirstName,
         LastName = user.LastName,
         Photo50 = user.Photo50,
     });
 }
Пример #9
0
        public string GenerateRefreshToken(DataModels.User user)
        {
            byte[] salt = GenerateSalt(16);

            byte[] bytes        = KeyDerivation.Pbkdf2(Guid.NewGuid().ToString(), salt, KeyDerivationPrf.HMACSHA512, 10000, 16);
            string refreshToken = Convert.ToBase64String(bytes);

            return(refreshToken.Replace("+", string.Empty)
                   .Replace("=", "")
                   .Replace("/", "")
                   .Replace(":", ""));
        }
Пример #10
0
        public ViewModels.Team Save(ViewModels.RegisterTeam newTeam, string userName)
        {
            if (!ValidateTeam(newTeam, userName))
            {
                this.ValidationFailed();
                return(null);
            }

            this.ValidationPassed();
            DataModels.Team dbTeam = new DataModels.Team();
            dbTeam.Name             = newTeam.Name;
            dbTeam.PublicIdentifier = Guid.NewGuid();
            DataModels.User postingUser = this.context.User.Where(x => x.EmailAddress == userName).FirstOrDefault();
            dbTeam.Site        = postingUser.Site;
            dbTeam.Description = newTeam.Description;
            if (newTeam.TeamLeaderId != null)
            {
                DataModels.User teamLeader = this.context.User.Include(x => x.Role).Where(x => x.PublicIdentifier == newTeam.TeamLeaderId).FirstOrDefault();
                if (teamLeader != null)
                {
                    if (teamLeader.Role.ID == 4)
                    {
                        teamLeader.Role = this.context.Role.Where(x => x.ID == 3).FirstOrDefault();
                    }
                    dbTeam.TeamLeader = teamLeader;
                }
            }

            if (newTeam.TeamManagerId != null)
            {
                DataModels.User teamManager = this.context.User.Where(x => x.PublicIdentifier == newTeam.TeamManagerId).FirstOrDefault();
                if (teamManager != null)
                {
                    dbTeam.TeamManager = teamManager;
                }
            }

            dbTeam.TeamMembers = new List <DataModels.User>();

            foreach (RegisterMember member in newTeam.TeamMembers)
            {
                DataModels.User teamMember = this.context.User.Where(x => x.PublicIdentifier == member.Id).FirstOrDefault();
                dbTeam.TeamMembers.Add(teamMember);
            }

            this.context.Team.Add(dbTeam);
            this.context.SaveChanges();
            ViewModels.Team resultTeam = new ViewModels.Team();
            resultTeam.Name = dbTeam.Name;
            resultTeam.ID   = dbTeam.PublicIdentifier;
            return(resultTeam);
        }
Пример #11
0
        private static DateTime GetCooldown(DataModels.User user, float random, double scale = 1d)
        {
#if DEBUG
            if (user != null && (user.IsAdmin.GetValueOrDefault() || user.IsModerator.GetValueOrDefault()))
            {
                //random *= 0.f;
                scale *= 0.5f;
                return(DateTime.UtcNow.AddSeconds(Math.Min(random * 60d, 30) * scale));
            }
#endif

            return(DateTime.UtcNow.AddMinutes(Math.Min(random * 60d, 30) * scale));
        }
            public Task <Guid> Handle(AddUserCommand request, CancellationToken cancellationToken)
            {
                var user = new DataModels.User()
                {
                    Id       = request.Id,
                    Name     = request.Name,
                    IsActive = request.IsActive
                };

                _db.User.Add(user);
                _db.SaveChanges();
                return(Task.FromResult(user.Id));
            }
Пример #13
0
        public string GenereateJwtToken(DataModels.User user)
        {
            var claims = new[] { new Claim(ClaimTypes.Name, user.EmailAddress), new Claim(ClaimTypes.Role, user.Role.Name) };
            var key    = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(configuration["SecurityKey"]));
            var creds  = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var token  = new JwtSecurityToken(
                issuer: "yourdomain.com",
                audience: "yourdomain.com",
                claims: claims,
                expires: DateTime.Now.AddMinutes(20),
                signingCredentials: creds);

            return(new JwtSecurityTokenHandler().WriteToken(token));
        }
Пример #14
0
        public ViewModels.User Save(ViewModels.RegisterUser user)
        {
            try
            {
                if (!ValidateUser(user))
                {
                    base.ValidationFailed();
                    return(null);
                }

                base.ValidationPassed();
                DataModels.User dbUser = new DataModels.User();
                dbUser.CreatedDate      = DateTime.Now;
                dbUser.EmailAddress     = user.EmailAddress;
                dbUser.FirstName        = user.FirstName;
                dbUser.LastName         = user.LastName;
                dbUser.PasswordHash     = hashGenerator.CalculateHash(user.Password);
                dbUser.PublicIdentifier = Guid.NewGuid();
                DataModels.Site site = null;
                if (this.configuration["SingleSiteMode"].ToLower() == "true")
                {
                    site        = this.context.Site.FirstOrDefault();
                    dbUser.Site = site;
                }
                if (this.context.User.Count() == 0)
                {
                    //Congrats you are the site admin!
                    dbUser.Role = this.context.Role.Where(x => x.ID == 1).FirstOrDefault();
                }
                else
                {
                    //Lowly team member
                    dbUser.Role = this.context.Role.Where(x => x.ID == 4).FirstOrDefault();
                }
                this.context.User.Add(dbUser);
                this.context.SaveChanges();
                ViewModels.User viewUser = new ViewModels.User();
                viewUser.FirstName    = dbUser.FirstName;
                viewUser.LastName     = dbUser.LastName;
                viewUser.EmailAddress = dbUser.EmailAddress;
                viewUser.UserSite     = site.PublicIdentifier;
                viewUser.userId       = dbUser.PublicIdentifier;
                return(viewUser);
            }
            catch (Exception e)
            {
                base.SetError(e.Message);
                return(null);
            }
        }
Пример #15
0
        public void SendPermissionData(DataModels.GameSession gameSession, DataModels.User user = null)
        {
            if (gameData == null)
            {
                logger.LogError(nameof(gameData) + " is null. unable to send permission data.");
                return;
            }

            if (gameSession == null)
            {
                logger.LogError(nameof(gameSession) + " is null. Unable to send permission data.");
                return;
            }

            user = user ?? gameData.GetUser(gameSession.UserId);
            var isAdmin     = user.IsAdmin.GetValueOrDefault();
            var isModerator = user.IsModerator.GetValueOrDefault();
            //var subInfo = await twitchClient.GetSubscriberAsync(user.UserId);
            var patreonTier = user.PatreonTier ?? 0;

            var subscriptionTier   = patreonTier;
            var expMultiplierLimit = MaxMultiplier[patreonTier];

            if (isModerator)
            {
                subscriptionTier   = 3;
                expMultiplierLimit = MaxMultiplier[subscriptionTier];
            }

            if (isAdmin)
            {
                subscriptionTier   = 3;
                expMultiplierLimit = 50000000;
            }

            var permissionEvent = gameData.CreateSessionEvent(
                GameEventType.PermissionChange,
                gameSession,
                new Permissions
            {
                IsAdministrator         = user.IsAdmin ?? false,
                IsModerator             = user.IsModerator ?? false,
                SubscriberTier          = subscriptionTier,
                ExpMultiplierLimit      = expMultiplierLimit,
                StrictLevelRequirements = true,
            });

            gameData.Add(permissionEvent);
        }
 public IActionResult RefreshAccessToken(string refreshToken)
 {
     DataModels.User user = this._context.User.Include(x => x.Role).Where(x => x.RefreshToken == refreshToken).FirstOrDefault();
     if (user == null)
     {
         return(BadRequest());
     }
     else if (user.RefreshTokenExpiration < DateTime.Now)
     {
         return(BadRequest());
     }
     else
     {
         return(new ObjectResult(new RefreshResponse(jwtUtilities.GenereateJwtToken(user))));
     }
 }
Пример #17
0
        private WebsiteAdminUser GetUser(DataModels.User userData)
        {
            if (userData == null)
            {
                return(null);
            }
            var clan = gameData.GetClanByUser(userData.Id);

            WebsiteClan websiteClan = null;

            if (clan != null)
            {
                websiteClan = new WebsiteClan
                {
                    Id              = clan.Id,
                    CanChangeName   = clan.CanChangeName,
                    NameChangeCount = clan.NameChangeCount,
                    Level           = clan.Level,
                };
            }

            var bankItems =
                gameData
                .GetUserBankItems(userData.Id)
                .Select(DataMapper.Map <RavenNest.Models.UserBankItem, RavenNest.DataModels.UserBankItem>)
                .ToList();

            return(new WebsiteAdminUser
            {
                Characters = new List <WebsiteAdminPlayer>(),
                Created = userData.Created,
                Id = userData.Id,
                PatreonTier = userData.PatreonTier,
                UserId = userData.UserId,
                UserName = userData.UserName,
                Email = userData.Email,
                IsAdmin = userData.IsAdmin.GetValueOrDefault(),
                IsModerator = userData.IsModerator.GetValueOrDefault(),
                Status = userData.Status ?? 0,
                IsHiddenInHighscore = userData.IsHiddenInHighscore.GetValueOrDefault(),
                Clan = websiteClan,
                HasClan = websiteClan != null,
                Stash = bankItems,
            });
        }
Пример #18
0
 private static SessionToken GenerateSessionToken(
     AuthToken token,
     DataModels.User user,
     DataModels.GameSession session,
     string clientVersion)
 {
     return(new SessionToken
     {
         AuthToken = token.Token,
         ExpiresUtc = DateTime.UtcNow + TimeSpan.FromDays(180),
         SessionId = session.Id,
         StartedUtc = session.Started,
         TwitchDisplayName = user.DisplayName,
         TwitchUserId = user.UserId,
         TwitchUserName = user.UserName,
         ClientVersion = clientVersion
     });
 }
Пример #19
0
        public ViewModels.User[] GetUnassignedUsers(string userName)
        {
            DataModels.User   activeUser = this.context.User.Include(x => x.Site).Where(x => x.EmailAddress == userName).FirstOrDefault();
            DataModels.User[] users      = this.context.User.Include(x => x.Site).Include(x => x.Team)
                                           .Where(x => x.Site == activeUser.Site && x.Team == null).ToArray();
            List <ViewModels.User> viewUsers = new List <ViewModels.User>();

            foreach (var user in users)
            {
                ViewModels.User viewUser = new ViewModels.User();
                viewUser.FirstName    = user.FirstName;
                viewUser.LastName     = user.LastName;
                viewUser.EmailAddress = user.EmailAddress;
                viewUser.userId       = user.PublicIdentifier;
                viewUsers.Add(viewUser);
            }

            return(viewUsers.ToArray());
        }
Пример #20
0
        private bool ValidateTeam(RegisterTeam newTeam, string userName)
        {
            if (String.IsNullOrEmpty(newTeam.Name))
            {
                return(false);
            }

            DataModels.User   postingUser = this.context.User.Include(x => x.Site).Where(x => x.EmailAddress == userName).FirstOrDefault();
            DataModels.Team[] siteTeams   = this.context.Team.Include(x => x.Site).Where(x => x.Site == postingUser.Site).ToArray();

            foreach (var team in siteTeams)
            {
                if (team.Name == newTeam.Name)
                {
                    return(false);
                }
            }
            return(true);
        }
Пример #21
0
        public ApiResponse <ApiModels.AuthUser> UpdateToken(Guid token)
        {
            DataModels.User dataUser = _dbContext.Users.FirstOrDefault(x => x.Token == token);

            if (dataUser == null)
            {
                return(new ApiResponse <ApiModels.AuthUser>("User with this token not found"));
            }

            dataUser.Token     = Guid.NewGuid();
            dataUser.ExpiredAt = DateTime.UtcNow.AddDays(TokenExpiredAtDays);

            _dbContext.SaveChanges();

            return(new ApiResponse <ApiModels.AuthUser>()
            {
                Ok = true,
                Data = ApiMapper.GetAuthUser(dataUser),
            });
        }
Пример #22
0
        public ApiResponse <DataModels.User> CheckToken(Guid token)
        {
            DataModels.User dataUser = _dbContext.Users.FirstOrDefault(x => x.Token == token);

            if (dataUser == null)
            {
                return(new ApiResponse <DataModels.User>("User with this token not found"));
            }

            if (dataUser.ExpiredAt < DateTime.UtcNow)
            {
                return(new ApiResponse <DataModels.User>("Token expired. Please, update it ^^"));
            }

            return(new ApiResponse <DataModels.User>()
            {
                Ok = true,
                Data = dataUser,
            });
        }
Пример #23
0
        public ApiResponse <IEnumerable <ApiModels.Audio> > GetAudios(DataModels.User user, int skip, int take)
        {
            if (take <= 0)
            {
                return new ApiResponse <IEnumerable <ApiModels.Audio> >()
                       {
                           Ok   = true,
                           Data = Enumerable.Empty <ApiModels.Audio>(),
                       }
            }
            ;

            if (skip < 0)
            {
                skip = 0;
            }


            List <ApiModels.Audio> audioList = _dbContext.Audios
                                               .Where(x => x.UserId == user.Id)
                                               .OrderByDescending(x => x.Date)
                                               .Skip(skip)
                                               .Take(take)
                                               .ToList()
                                               .Select(x => ApiMapper.GetAudio(x))
                                               .ToList();

            for (int i = 0; i < audioList.Count(); i++)
            {
                AudioById audioEntity = _vkWebService.GetAudio(user.AccessToken, user.Id, audioList[i].VkId);

                string url = audioEntity?.response?.FirstOrDefault()?.url;
                audioList[i].Url = url;
            }

            return(new ApiResponse <IEnumerable <ApiModels.Audio> >()
            {
                Ok = true,
                Data = audioList.Where(x => !string.IsNullOrWhiteSpace(x.Url)),
            });
        }
Пример #24
0
        public string LoginVerificated(int id)
        {
            string returned   = "IsNotExists";
            var    parameters = Request.GetQueryNameValuePairs();
            var    login      = parameters.Where(o => o.Key == "login").FirstOrDefault().Value.ToString();

            if (login != null)
            {
                using (WDB w = new WDB())
                {
                    DataModels.User user = w.User.LoginVerificated(login);
                    if (user != null)
                    {
                        returned = "IsExists";
                    }
                }
            }
            else
            {
                returned = "IsExists";
            }

            return(returned);
        }
Пример #25
0
        public ApiResponse <ApiModels.AuthUser> RegisterNewUser(string code)
        {
            if (string.IsNullOrWhiteSpace(code))
            {
                return(new ApiResponse <ApiModels.AuthUser>($"{nameof(code)} can't be null or white space"));
            }

            AccessToken vkAccessToken = _vkWebService.GetAccessToken(code);
            string      accessToken   = vkAccessToken.access_token;
            int         userId        = vkAccessToken.user_id;

            UserEntity userEntity = null;

            try
            {
                userEntity = _vkWebService.GetUserEntity(accessToken, userId);
            } catch (Exception ex)
            {
                _logger.Error($"{nameof(RegisterNewUser)} failed: {ex.Message}");
                return(new ApiResponse <ApiModels.AuthUser>(ex.Message));
            }

            if (userEntity == null)
            {
                return(new ApiResponse <ApiModels.AuthUser>("Something went wrong"));
            }

            if (userEntity.error != null)
            {
                return(new ApiResponse <ApiModels.AuthUser>(userEntity.error?.error_msg ?? "Unknown error"));
            }

            if (userEntity.response == null || userEntity.response.Count() != 1)
            {
                return(new ApiResponse <ApiModels.AuthUser>("No user data"));
            }


            VkModels.User vkUser = userEntity.response.First();

            DataModels.User dataUser = _dbContext.Users.FirstOrDefault(x => x.Id == userId);
            if (dataUser == null)
            {
                dataUser = new DataModels.User()
                {
                    Id          = userId,
                    FirstName   = vkUser.first_name,
                    LastName    = vkUser.last_name,
                    Photo50     = vkUser.photo_50,
                    AccessToken = accessToken,
                    Token       = Guid.NewGuid(),
                    ExpiredAt   = DateTime.UtcNow.AddDays(TokenExpiredAtDays),
                };

                _dbContext.Users.Add(dataUser);
            }
            else
            {
                dataUser.FirstName   = vkUser.first_name;
                dataUser.LastName    = vkUser.last_name;
                dataUser.Photo50     = vkUser.photo_50;
                dataUser.AccessToken = accessToken;
                dataUser.Token       = Guid.NewGuid();
                dataUser.ExpiredAt   = DateTime.UtcNow.AddDays(TokenExpiredAtDays);
            }

            _dbContext.SaveChanges();

            return(new ApiResponse <ApiModels.AuthUser>()
            {
                Ok = true,
                Data = ApiMapper.GetAuthUser(dataUser),
            });
        }
Пример #26
0
 public bool IncreaseGlobalExpMultiplier(DataModels.User user)
 {
     return(IncreaseGlobalExpMultiplier(user, 1));
 }
Пример #27
0
        //private ILog log = LogManager.GetLogger(typeof(_Default));
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
            #if DEBUG
            //If in debug mode and user is null, instantiate a debug user
            //object, so we don't have to login every time we debug.
                DataModels.User debUser = (DataModels.User)Session[Const.User];
            if (debUser == null)
            {
                debUser = new DataModels.User(DevConf.DebugUserId, true);
                Session[Const.User] = debUser;
            }
            debUser.IsAuStudent = true;
            #endif
                DataModels.User user = (DataModels.User)Session[Const.User];
                if (user == null || !user.IsAuStudent)
                {
                    string returnUrl = HttpUtility.UrlEncode(
                        Request.Url.ToString());
                    string queryStr = "?" +
                        Const.AuthAuStud + "=1" +
                        "&ReturnUrl=" + returnUrl;
                    string url = "~/User/Login.aspx" + queryStr;
                    Response.Redirect(url, true);
                }

                //Get the event ID
                string eidStr = Request[Const.EventId];
            #if DEBUG
            //If in debug mode and request event ID is undefined, assign an
            //event id.
            if (eidStr == null) eidStr = DevConf.DebugEventIdStr;
            #endif
                int eventId = 0;
                if (eidStr == null || !int.TryParse(eidStr, out eventId))
                    Response.Redirect("~/Default.aspx", true);

                if (!IsPostBack)
                {
                    PopulateForm(eventId);

                    if (IsNewRegistration)
                    {
                        //Not an update so it's a new registration.

                        regBtn.Visible = true;
                        UpdateButton.Visible = false;

                        //Check if event is full
                        if (Event.IsFull(eventId))
                        {
                            ErrorLit.Text = "We're sorry the event is full.";
                            regBtn.Enabled = false;
                        }
                    }
                    else
                    {
                        //This is an update of existing registraion.

                        regBtn.Visible = false;
                        UpdateButton.Visible = true;
                        FillRegistrationInfo(user.Uid, eventId);
                    }
                }
            }
            catch (Exception ex)
            {
                //ErrorLit.Text = ex.Message;
                //ErrorLit.Text = ex.StackTrace;
            }
        }
Пример #28
0
        public ApiResponse <object> CreateSchedule(DataModels.User dataUser, Schedule schedule)
        {
            if (schedule.Title == null)
            {
                return(new ApiResponse <object>("Schedule's title can't be null"));
            }

            schedule.Title = schedule.Title.Trim();

            if (schedule.Title == string.Empty)
            {
                return(new ApiResponse <object>("Schedule's title can't be empty"));
            }

            if (schedule.Title.Length > 50)
            {
                return(new ApiResponse <object>("Schedule's title can't be greater then 50 symbols"));
            }

            if (schedule.ScheduleRows == null || schedule.ScheduleRows.Count() == 0)
            {
                return(new ApiResponse <object>("Schedule rows can't be null or empty"));
            }

            IEnumerable <int> orderList     = schedule.ScheduleRows.Select(x => x.Order);
            List <int>        sortOrderList = orderList.OrderBy(x => x).ToList();

            int sortOrderCount = sortOrderList.Last() - sortOrderList.First() + 1;

            if (sortOrderCount > sortOrderList.Count)
            {
                return(new ApiResponse <object>("Order list has gaps"));
            }

            if (sortOrderCount < sortOrderList.Count)
            {
                return(new ApiResponse <object>("Order list has duplicates"));
            }

            IEnumerable <IGrouping <int, ScheduleRow> > scheduleRowsGroupIndex = schedule.ScheduleRows.GroupBy(x => x.UserId);

            //foreach (var sr in scheduleRowsGroupIndex)
            //{
            //    if (sr.GroupBy(x => x.CreateRandomOrder).Count() > 1)
            //        return new ApiResponse<object>($"User {sr.Key} have more then one order");
            //}

            DataModels.Schedule dataSchedule = new DataModels.Schedule()
            {
                BlockSize   = sortOrderList.Count,
                DateCreated = DateTime.UtcNow,
                Title       = schedule.Title,
                UserId      = dataUser.Id,
            };

            _dbContext.Schedules.Add(dataSchedule);
            _dbContext.SaveChanges();

            int addedScheduleId = dataSchedule.Id;

            var dataScheduleRowList = new List <DataModels.ScheduleRow>();

            foreach (var sr in scheduleRowsGroupIndex)
            {
                ScheduleRow firstScheduleRow = sr.First();
                //if(firstScheduleRow.CreateRandomOrder)
                //{
                //    CreateRandomOrderForUser(firstScheduleRow.UserId, addedScheduleId);
                //}

                for (int i = 0; i < sr.Count(); i++)
                {
                    dataScheduleRowList.Add(new DataModels.ScheduleRow()
                    {
                        GroupIndex = i + 1,
                        Order      = sr.ElementAt(i).Order,
                        ScheduleId = addedScheduleId,
                        UserId     = firstScheduleRow.UserId,
                    });
                }
            }

            _dbContext.ScheduleRows.AddRange(dataScheduleRowList);
            _dbContext.SaveChanges();

            return(new ApiResponse <object>()
            {
                Ok = true,
                Data = dataSchedule,
            });
        }
 public User(DataModels.User user) { this.userDataModel = user; }
 public User() 
 {
   userDataModel = new DataModels.User();
 }
 public UserViewModel(DataModels.User user) { this.userDataModel = user; }
Пример #32
0
        public ApiResponse <object> LoadAudios(DataModels.User user)
        {
            //get and remove all current user's albums/audios
            List <DataModels.Album> dataAlbumList = _dbContext.Albums.Where(x => x.UserId == user.Id).ToList();
            List <DataModels.Audio> dataAudioList = _dbContext.Audios.Where(x => x.UserId == user.Id).ToList();

            IEnumerable <int> audioIdList = dataAudioList.Select(x => x.VkId);

            List <DataModels.MixAudio> mixDataAudioList = _dbContext.MixAudios.Where(x => audioIdList.Contains(x.AudioId)).ToList();

            //Task loadAlbums = Task.Run(() =>
            //    dataAlbumList = _dbContext.Albums.Where(x => x.UserId == user.Id).ToList());

            //Task loadAudios = Task.Run(() =>
            //    dataAudioList = _dbContext.Audios.Where(x => x.UserId == user.Id).ToList());

            //await Task.WhenAll(loadAlbums, loadAudios);


            _dbContext.MixAudios.RemoveRange(mixDataAudioList);
            _dbContext.Audios.RemoveRange(dataAudioList);
            _dbContext.Albums.RemoveRange(dataAlbumList);

            //download all (okey, 6000)
            VkModels.AlbumEtity vkAlbumEntity = null;
            VkModels.AudioEtity vkAudioEntity = null;

            try
            {
                vkAlbumEntity = _vkWebService.GetAlbums(user.AccessToken, 100);
            } catch (Exception ex)
            {
                return(new ApiResponse <object>(ex.Message));
            }

            try
            {       //TODO: mb add few Tasks for better perform? Need to check
                vkAudioEntity = _vkWebService.GetAudios(user.AccessToken, 6000);
            } catch (Exception ex)
            {
                return(new ApiResponse <object>(ex.Message));
            }

            //album errors
            if (vkAlbumEntity.error != null)
            {
                return(new ApiResponse <object>(vkAlbumEntity.error?.error_msg));
            }
            if (vkAlbumEntity.response == null)
            {
                return(new ApiResponse <object>("Album response is null"));
            }
            //audio errors
            if (vkAudioEntity.error != null)
            {
                return(new ApiResponse <object>(vkAudioEntity.error?.error_msg));
            }
            if (vkAudioEntity.response == null)
            {
                return(new ApiResponse <object>("Audio response is null"));
            }

            user.AlbumsCount             = vkAlbumEntity.response.items.Count();
            user.AudiosCount             = vkAudioEntity.response.items.Count();
            _dbContext.Entry(user).State = System.Data.Entity.EntityState.Modified;

            //map albums
            IEnumerable <DataModels.Album> albums = vkAlbumEntity
                                                    .response
                                                    .items
                                                    .Select(x =>
            {
                DataModels.Album dataAlbum = VkMapper.GetAlbum(x);
                dataAlbum.UserId           = user.Id;
                return(dataAlbum);
            });

            //map musics
            var audioList = new List <DataModels.Audio>(vkAudioEntity.response.items.Count());

            for (int i = 0; i < vkAudioEntity.response.items.Count(); i++)
            {
                var mappedAudio = VkMapper.GetAudio(vkAudioEntity.response.items.ElementAt(i));
                mappedAudio.Order  = i + 1;
                mappedAudio.UserId = user.Id;

                audioList.Add(mappedAudio);
            }

            //add ranges and save changes
            _dbContext.Albums.AddRange(albums);
            _dbContext.SaveChanges();

            foreach (var aud in audioList)
            {
                DataModels.Album album = _dbContext.Albums.Local.FirstOrDefault(x => aud.AlbumId == x.VkId);
                if (album != null)
                {
                    aud.AlbumId = album.Id;
                }
            }

            _dbContext.Audios.AddRange(audioList);
            _dbContext.SaveChanges();

            return(new ApiResponse <object>()
            {
                Ok = true
            });
        }
Пример #33
0
 public IHttpActionResult UpdateUser(DataModels.User user)
 {
     return(Ok(UsersService.UpdateUser(user)));
 }
Пример #34
0
        protected void LoginButton_Click(object sender, EventArgs e)
        {
            try
            {
                int uid = -1;
                bool isStudent = false;

                //Authenticate
                if (AuthenticateSysUser)
                {
                    //We need to authenticate system user
                    //Authenticate system user
                    string email = emailTxb.Text.Trim();
                    string pwd = pwdTxb.Text;
                    uid = Authenticate(email, pwd);

                }

                //Authenticate AU user
                if (AuthenticateAuStudent)
                {
                    isStudent = AuthAuUser(auusrTxb.Text.Trim(),
                        aupwdTxb.Text);
                }

                //
                //Check and process result for both authentications.
                //
                if (AuthenticateSysUser && AuthenticateAuStudent)
                {
                    //Need authenticate for both system user and au user.

                    if (uid != -1)
                    {
                        //Sys auth succeeded. Create user and hide sys login
                        //box.
                        Panel1.Visible = false;
                        DataModels.User user = new DataModels.User(uid);
                        Session[Const.User] = user;
                        if (isStudent)
                        {
                            //Both auth succeed, redirect.
                            user.IsAuStudent = true;
                            Nav.ReturnToPrevPage(this);
                        }
                        else
                        {
                            //Sys succeed, AU fail
                            AuLoginLit.Text =
                                "Auburn credential is incorrect.";
                        }

                    }
                    else
                    {
                        FailureText.Text = "Email and password is incorrect.";
                    }
                }
                else if (AuthenticateSysUser)
                {
                    //Only need authentication for sys user.

                    if (uid != -1)
                    {
                        //Sys auth succeeded.
                        DataModels.User user = new DataModels.User(uid);
                        Session[Const.User] = user;
                        Nav.ReturnToPrevPage(this);
                    }
                    else
                    {
                        //Sys auth fail.
                        FailureText.Text = "Email and password is incorrect.";
                    }
                }
                else if (AuthenticateAuStudent)
                {
                    //Only need authenticatation for AU user.

                    DataModels.User user = (DataModels.User)Session[Const.User];
                    if (isStudent)
                    {
                        user.IsAuStudent = true;
                        Nav.ReturnToPrevPage(this);
                    }
                    else
                    {
                        AuLoginLit.Text =
                                "Auburn credential is incorrect.";
                    }
                }

            }
            catch (Exception ex)
            {
                FailureText.Text = "Sorry! There was a system error!";
                FailureText.Text += ex.Message;
                FailureText.Text += ex.StackTrace;
            }
        }
Пример #35
0
        public ApiResponse <IEnumerable <ApiModels.Audio> > GetAudios(DataModels.User user, int scheduleId, int skip, int take)
        {
            if (take <= 0)
            {
                return new ApiResponse <IEnumerable <ApiModels.Audio> >()
                       {
                           Ok   = true,
                           Data = Enumerable.Empty <ApiModels.Audio>(),
                       }
            }
            ;

            skip = skip <= 0 ? 1 : skip + 1;

            IEnumerable <int> pageNumbers = Enumerable.Range(skip, take);

            var scheduleQry =
                (from s in _dbContext.Schedules
                 where s.Id == scheduleId
                 join sr in _dbContext.ScheduleRows on s.Id equals sr.ScheduleId
                 select new
            {
                Schedule = s,
                ScheduleRow = sr
            } into scheduleRows
                 group scheduleRows by scheduleRows.ScheduleRow.UserId into _s
                 select new
            {
                UserId = _s.Key,
                ScheduleRows = _s,
            } into userRows
                 from pn in pageNumbers
                 select userRows.ScheduleRows.Select(x => new
            {
                GroupIndex = x.ScheduleRow.GroupIndex
                             + (userRows.ScheduleRows.Count() * (pn - 1)),
                Order = x.ScheduleRow.Order
                        + (x.Schedule.BlockSize * (pn - 1)),
                UserId = x.ScheduleRow.UserId,
            }))
                .SelectMany(x => x);

            List <ApiModels.Audio> audioList =
                (from s in scheduleQry

                 join a in _dbContext.Audios on
                 new { index = s.GroupIndex, userId = s.UserId }
                 equals new { index = a.Order, userId = a.UserId }

                 join ma in _dbContext.MixAudios on
                 new { index = s.GroupIndex, userId = s.UserId }
                 equals new { index = ma.Order, userId = ma.UserId } into _ma

                 from ma in _ma.DefaultIfEmpty()

                 join m in _dbContext.Audios on
                 new { audioId = ma.AudioId, userId = ma.UserId }
                 equals new { audioId = m.Id, userId = m.UserId } into _m
                 from m in _m.DefaultIfEmpty()

                 where ma == null || ma.ScheduleId == scheduleId
                 select new
            {
                Audio = m ?? a,
                Order = s.Order,
            })
                .OrderBy(x => x.Order)
                .ToList()
                .Select(x => ApiMapper.GetAudio(x.Audio))
                .ToList();

            for (int i = 0; i < audioList.Count(); i++)
            {
                AudioById audioEntity = _vkWebService.GetAudio(user.AccessToken, user.Id, audioList[i].VkId);

                string url = audioEntity?.response?.FirstOrDefault()?.url;
                audioList[i].Url = url;
            }

            return(new ApiResponse <IEnumerable <ApiModels.Audio> >()
            {
                Ok = true,
                Data = audioList.Where(x => !string.IsNullOrWhiteSpace(x.Url)),
            });
        }