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()); }
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); }