예제 #1
0
        public static List<RunnerData> GetRunnerEnrolmentData(long raceId, long organizationId)
        {
            using (var db = new CCEntities())
            {
                return db.ExecuteStoreQuery<RunnerData>(@"
                            SELECT
                                u.UserId,
                                rr.RunnerRaceRecordId,
                                u.Firstname + ' ' + u.Lastname AS Name,
                                CAST(IIF(rr.RunnerRaceRecordId IS NOT NULL, 1, 0) AS BIT) AS UserIsEnrolled,
                                CAST(IIF(r.CompletedOn IS NOT NULL, 1, 0) AS BIT) AS RaceIsComplete,
                                ISNULL(rr.VarsityLevelId, u.DefaultVarsityLevelId) AS VarsityLevelId,
                                ISNULL(rr.RunnerClassificationId, u.DefaultRunnerClassificationId) AS RunnerClassificationId

                            FROM Race r
                                INNER JOIN Organization o ON r.OrganizationId = o.OrganizationId
                                INNER JOIN [User] u ON u.OrganizationId = o.OrganizationId
                                LEFT OUTER JOIN RunnerRaceRecord rr ON u.UserId = rr.UserId
                            WHERE r.RaceId = @raceId AND r.OrganizationId = @organizationId
                                AND (u.Gender = r.GenderRestriction OR r.GenderRestriction = '" + Genders.Unspecified + "')",
                        new SqlParameter[] {
                            new SqlParameter("raceId", raceId),
                            new SqlParameter("organizationId", organizationId)
                        }).ToList();
            }
        }
예제 #2
0
        public static List<Split> GetSplitsForRunnerRaceRecord(long runnerRaceRecordId)
        {
            using (var db = new CCEntities())
            {
                var rrrs = db.RunnerRaceRecordSegments.Where(r => r.RunnerRaceRecordId == runnerRaceRecordId)
                    .OrderBy(rrs => rrs.ElapsedTimeInSeconds).ToArray();
                var splits = new List<Split>();

                for (int i = 0; i < rrrs.Length; i++)
                {
                    var split = new Split
                    {
                        RunnerRaceRecordSegmentId = rrrs[i].RunnerRaceRecordSegmentId,
                        ElapsedTimeInSeconds = rrrs[i].ElapsedTimeInSeconds,
                    };
                    if (i == 0)
                        split.IntervalFromPriorSplit = rrrs[i].ElapsedTimeInSeconds;
                    else
                        split.IntervalFromPriorSplit = rrrs[i].ElapsedTimeInSeconds - rrrs[i - 1].ElapsedTimeInSeconds;

                    splits.Add(split);
                }

                return splits;
            }
        }
예제 #3
0
 public static void DeleteSegmentsByRunnerRaceRecordId(long runnerRaceRecordId)
 {
     using (var db = new CCEntities())
     {
         db.ExecuteStoreCommand(@"
             DELETE FROM RunnerRaceRecordSegment WHERE RunnerRaceRecordId = @runnerRaceRecordId",
             new SqlParameter("runnerRaceRecordId", runnerRaceRecordId));
     }
 }
예제 #4
0
파일: Role.cs 프로젝트: PhilipAdeoye/CCIS
 public static List<Role> GetRolesForOrganizationCreatableByRole(long organizationId, int creatorRoleId)
 {
     using (var db = new CCEntities())
     {
         if (creatorRoleId == Ids.Admin && organizationId == Organization.Ids.CCIS)
             return db.Roles.ToList();
         else
             return db.Roles.Where(r => r.RoleId != Ids.Admin).ToList();
     }
 }
예제 #5
0
        public override string[] GetUsersInRole(string roleName)
        {
            using (var db = new CCEntities())
            {
                return (from r in db.Roles
                        join u in db.Users on r.RoleId equals u.RoleId
                        where r.RoleName.Equals(roleName, StringComparison.CurrentCultureIgnoreCase)
                        select u.Username).ToArray();

            }
        }
예제 #6
0
        public static void UnEnrollRunners(IEnumerable<long> unenrolledRunnerIds)
        {
            if (unenrolledRunnerIds.Count() > 0)
            {
                using (var db = new CCEntities())
                {
                    var ids = string.Join(",", unenrolledRunnerIds);
                    db.ExecuteStoreCommand(@"
                        DELETE FROM RunnerRaceRecordSegment
                        WHERE RunnerRaceRecordId IN(" + ids + @");

                        DELETE FROM RunnerRaceRecord
                        WHERE RunnerRaceRecordId IN(" + ids + @");");
                }
            }
        }
예제 #7
0
        public IEnumerable<DbValidationError> SaveValidate()
        {
            var errors = new List<DbValidationError>();

            if (string.IsNullOrWhiteSpace(Name))
                errors.Add(new DbValidationError("Organization Name is required", "Name"));

            if (errors.Count == 0)
            {
                using (var db = new CCEntities())
                {
                    if (db.Organizations.Any(o => o.Name == Name && o.OrganizationId != OrganizationId))
                        errors.Add(new DbValidationError("Sorry, but this name is already in use", "Name"));
                }
            }

            return errors;
        }
예제 #8
0
파일: User.cs 프로젝트: PhilipAdeoye/CCIS
        public IEnumerable<DbValidationError> SaveValidate()
        {
            var errors = new List<DbValidationError>();

            if (string.IsNullOrWhiteSpace(Firstname))
                errors.Add(new DbValidationError("First Name is required", "Firstname"));

            if (string.IsNullOrWhiteSpace(Lastname))
                errors.Add(new DbValidationError("Last Name is required", "Lastname"));

            if (string.IsNullOrWhiteSpace(Username))
                errors.Add(new DbValidationError("Username is required", "Username"));

            if (string.IsNullOrWhiteSpace(Password))
                errors.Add(new DbValidationError("Password is required", "Password"));

            if (!(Gender == Genders.Male || Gender == Genders.Female || Gender == Genders.Unspecified))
                errors.Add(new DbValidationError("Gender is required", "Gender"));

            if (string.IsNullOrWhiteSpace(Email))
                errors.Add(new DbValidationError("Email Address is required", "Email"));
            else
            {
                try { new MailAddress(Email); }
                catch (FormatException)
                { errors.Add(new DbValidationError("Invalid Email Address", "Email")); }
            }

            if (errors.Count == 0)
            {
                using (var db = new CCEntities())
                {
                    if(db.Users.Any(h => h.Username.Equals(Username, StringComparison.InvariantCultureIgnoreCase)
                            && h.UserId != UserId))
                        errors.Add(new DbValidationError("Username must be unique", "Username"));

                    if (!db.Roles.Any(r => r.RoleId == RoleId))
                        errors.Add(new DbValidationError("Invalid Role", "RoleId"));
                }
            }

            return errors;
        }
예제 #9
0
        public override string[] GetRolesForUser(string username)
        {
            using (var db = new CCEntities())
            {
                string[] array;
                User user = db.Users.FirstOrDefault(u => u.Username.Equals(username, StringComparison.CurrentCultureIgnoreCase));
                var roles = (from ur in db.Roles
                             join u in db.Users on ur.RoleId equals u.RoleId
                             where u.Username == username
                             select ur.RoleName);

                if (roles != null)
                {
                    array = roles.ToArray();
                    return roles.ToArray();
                }
                else
                    return new string[] { };
            }
        }
예제 #10
0
파일: Race.cs 프로젝트: PhilipAdeoye/CCIS
        public static void DeleteWithId(long raceId)
        {
            using (var db = new CCEntities())
            {
                var runnerRaceRecordIds = db.RunnerRaceRecords.Where(rr => rr.RaceId == raceId)
                    .Select(rr => rr.RunnerRaceRecordId);

                if (runnerRaceRecordIds.Count() > 0)
                {
                    db.ExecuteStoreCommand(@"
                        DELETE FROM RunnerRaceRecordSegment
                        WHERE RunnerRaceRecordId IN(" + string.Join(",", runnerRaceRecordIds) + ");");
                }

                db.ExecuteStoreCommand(@"
                    DELETE FROM RunnerRaceRecord WHERE RaceId = @raceId;

                    DELETE FROM Race WHERE RaceId = @raceId;",
                new SqlParameter("raceId", raceId));
            }
        }
예제 #11
0
        public IEnumerable<DbValidationError> SaveValidate()
        {
            var errors = new List<DbValidationError>();

            if (errors.Count == 0)
            {
                using (var db = new CCEntities())
                {
                    if (!db.Races.Any(r => r.RaceId == RaceId))
                        errors.Add(new DbValidationError("Invalid Race", "RaceId"));

                    if(!db.RunnerClassifications.Any(rc=> rc.RunnerClassificationId == RunnerClassificationId))
                        errors.Add(new DbValidationError("Invalid Runner Classification", "RunnerClassificationId"));

                    if (!db.VarsityLevels.Any(v => v.VarsityLevelId == VarsityLevelId))
                        errors.Add(new DbValidationError("Invalid Varsity Level", "VarsityLevelId"));
                }
            }

            return errors;
        }
예제 #12
0
        public override bool IsUserInRole(string username, string roleName)
        {
            using (var db = new CCEntities())
            {
                // Find user by username
                User user = db.Users.FirstOrDefault(u => u.Username.Equals(username, StringComparison.CurrentCultureIgnoreCase));

                // Select user role by username, compare
                var role = (from ur in db.Roles
                            join u in db.Users on ur.RoleId equals u.RoleId
                            where u.Username == username
                            select ur.RoleName);

                if (user != null)
                    return role.Any(r => r.Equals(roleName, StringComparison.CurrentCultureIgnoreCase));
                else
                    return false;
            }
        }
예제 #13
0
 public override bool RoleExists(string roleName)
 {
     using (var db = new CCEntities())
     {
         return db.Roles.Any(r => r.RoleName.Equals(roleName, StringComparison.CurrentCultureIgnoreCase));
     }
 }
예제 #14
0
 public CCMembershipUser GetUser(string username, string password)
 {
     using (var db = new CCEntities())
     {
         var user = db.Users.SingleOrDefault(u => u.Username == username);
         if (user == null)
             throw new InvalidCredentialsException();
         else
         {
             if (!PasswordHash.ValidatePassword(password, user.Password))
                 throw new InvalidCredentialsException();
             else
                 return Initialize(user);
         }
     }
 }