public AllowedActions GetAllowedActions(UserProfileModel user, DateTime?dateTime = null)
        {
            if (user == null)
            {
                return(AllowedActions.Nothing);
            }
            var checkDateTime = dateTime ?? DateTime.UtcNow;

            if (checkDateTime > this.Start)
            {
                return(AllowedActions.Nothing);
            }
            if (user.IsInRoleComp(RoleEnum.Admin, this))
            {
                return(AllowedActions.FullApp);
            }
            if (!user.IsInRoleComp(RoleEnum.User, this))
            {
                return(AllowedActions.Nothing);
            }
            if (checkDateTime <= this.ApplicationsEnd || (checkDateTime <= this.ApplicationsEditEnd && this.AllowLateAppl))
            {
                return(AllowedActions.FullApp);
            }
            if (checkDateTime <= this.ApplicationsEditEnd)
            {
                return(AllowedActions.Change);
            }
            return(AllowedActions.Nothing);
        }
        public ClimberApplication[] GetAppsForUser(UserProfileModel user, long compId, int?groupId, long regionId)
        {
            var comp = db.Competitions.Find(compId);

            if (comp == null)
            {
                return(new ClimberApplication[0]);
            }
            if (!user.IsInRoleComp(RoleEnum.Admin, comp))
            {
                if (regionId != user.RegionId || !user.IsInRoleComp(RoleEnum.User, comp))
                {
                    return(new ClimberApplication[0]);
                }
            }
            IEnumerable <Comp_CompetitiorRegistrationModel> climbers = comp.Climbers.Where(c => c.Teams.Count(ct => ct.RegionId == regionId) > 0);

            if (groupId != null)
            {
                climbers = climbers.Where(c => c.CompAgeGroup.AgeGroupId == groupId);
            }
            var clmList = from r in comp.Climbers
                          join d in db.CompetitionClimberTeams on r.Iid equals d.ClimberRegId
                          where d.RegionId == regionId
                          select new { CLM = r, REG = d };

            if (groupId != null)
            {
                clmList = clmList.Where(a => a.CLM.CompAgeGroup.AgeGroupId == groupId);
            }
            var resList = clmList.ToList()
                          .Select(a => new { DB = a.CLM, UPD = new ClimberApplication(a.REG) })
                          .ToList();

            resList.Sort((a, b) =>
            {
                if (a.DB.Iid == b.DB.Iid)
                {
                    return(0);
                }
                var n = (b.DB.CompAgeGroup.AgeGroup.MinAge ?? 0).CompareTo(a.DB.CompAgeGroup.AgeGroup.MinAge ?? 0);
                if (n != 0)
                {
                    return(n);
                }
                n = a.DB.Person.GenderFemale.CompareTo(b.DB.Person.GenderFemale);
                if (n != 0)
                {
                    return(n);
                }
                return(a.DB.Person.Fullname.CompareTo(b.DB.Person.Fullname));
            });
            return(resList.Select(r => r.UPD).ToArray());
        }
示例#3
0
 public bool AllowedEdit(UserProfileModel user, DateTime?dateTime = null)
 {
     if (!this.Climber.Competition.AllowedToEdit(user, dateTime))
     {
         return(false);
     }
     if (user.IsInRoleComp(RoleEnum.Admin, this.Climber.Competition))
     {
         return(true);
     }
     return(user.RegionId != null && user.RegionId.Value == this.RegionId);
 }
        public List <RegionModel> GetRegionsForApps(UserProfileModel user, long compId)
        {
            var comp = db.Competitions.Find(compId);

            if (comp == null)
            {
                return(new List <RegionModel>());
            }
            List <RegionModel> regList = new List <RegionModel>();

            if (user.IsInRoleComp(RoleEnum.Admin, comp))
            {
                regList = db.Regions.Where(r => (r.IidParent ?? 0) == (comp.Region.IidParent ?? 0)).ToList();
            }
            else if (user.IsInRoleComp(RoleEnum.User, comp) && user.RegionId != null)
            {
                regList = new List <RegionModel> {
                    user.Region
                }
            }
            ;
            regList.Sort();
            return(regList);
        }