示例#1
0
        public String[] DeleteRegion(UserProfileModel user, long regionId)
        {
            var region = db.Regions.Find(regionId);

            if (region == null)
            {
                return new String[] { "Регион был удален" }
            }
            ;
            if (!user.IsInRoleRegion(RoleEnum.Admin, region.IidParent))
            {
                return new String[] { "У вас нет прав для удаления региона" }
            }
            ;
            List <String> errors = new List <string>();

            if (region.CompetitionsHold.Count > 0)
            {
                errors.Add("Данный регион проводил соревнования. Сначала надо удалить их");
            }
            if (region.PeopleCompetitions.Count > 0)
            {
                errors.Add("От данного региона выступали участники. Сначала удалите их");
            }
            if (errors.Count > 0)
            {
                return(errors.ToArray());
            }
            db.Regions.Remove(region);
            db.SaveChanges();
            return(new String[0]);
        }
示例#2
0
        public String[] SaveGlobalAdmins(UserProfileModel user, IEnumerable <RegionAdminModel> model)
        {
            List <String> errors = new List <string>();

            if (!user.IsInRoleRegion(RoleEnum.Admin, null))
            {
                errors.Add("У вас нет прав на корректировку списка");
            }
            if (model == null)
            {
                model = new RegionAdminModel[0];
            }
            if (model.Count(a => a.IsAdmin) < 1)
            {
                errors.Add("Невозможно удалить последнего администратора");
            }
            if (model.Count(a => a.IsAdmin && a.UserId == user.Iid) < 1)
            {
                errors.Add("Нельзя удалить себя из списка администраторов");
            }
            if (errors.Count > 0)
            {
                return(errors.ToArray());
            }
            var existingRoles = db.UserRoles.Where(r => r.RegionID == null && r.CompID == null).ToList();
            var rolesToDel    = existingRoles.Where(r => r.RoleId < (int)RoleEnum.Admin).ToList();

            foreach (var r in rolesToDel)
            {
                existingRoles.Remove(r);
            }
            rolesToDel.AddRange(existingRoles.Where(r => model.Count(m => m.UserId == r.UserId && m.IsAdmin) < 1));
            foreach (var r in rolesToDel)
            {
                existingRoles.Remove(r);
            }
            foreach (var em in model.Where(m => m.IsAdmin && existingRoles.Count(er => er.UserId == m.UserId) < 1))
            {
                db.UserRoles.Add(new UserRoleModel
                {
                    RegionID = null,
                    CompID   = null,
                    RoleId   = (int)RoleEnum.Admin,
                    UserId   = em.UserId
                });
            }
            foreach (var r in rolesToDel)
            {
                db.UserRoles.Remove(r);
            }
            db.SaveChanges();
            return(new String[0]);
        }
示例#3
0
        public ErrorTuple[] SaveRegion(UserProfileModel user, RegionEditModel model)
        {
            List <ErrorTuple> res = new List <ErrorTuple>();

            if (!user.IsInRoleRegion(RoleEnum.Admin, model.IidParent))
            {
                res.Add(new ErrorTuple("IidParent", "У вас нет прав для создания команд в выбранном регионе"));
            }
            RegionModel saveModel;

            if ((model.Iid ?? 0) > 0)
            {
                saveModel = db.Regions.Find(model.Iid);
                if (saveModel == null)
                {
                    res.Add(new ErrorTuple(String.Empty, "Корректируемый регион был удален"));
                }
                else if (!user.IsInRoleRegion(RoleEnum.Admin, saveModel.IidParent))
                {
                    res.Add(new ErrorTuple(String.Empty, "У вас нет прав для корректировки выбранного региона"));
                }
                if (res.Count > 0)
                {
                    return(res.ToArray());
                }
            }
            else
            {
                if (res.Count > 0)
                {
                    return(res.ToArray());
                }
                saveModel = new RegionModel()
                {
                    UserRoles = new List <UserRoleModel>()
                };
                db.Regions.Add(saveModel);
            }
            saveModel.IidParent = model.IidParent;
            saveModel.Name      = model.Name;
            String prefixCode;

            if (model.IidParent == null)
            {
                prefixCode = String.Empty;
            }
            else
            {
                var preg = db.Regions.Find(model.IidParent);
                prefixCode = preg == null ? String.Empty : (preg.SymCode ?? String.Empty);
            }
            saveModel.SymCode = prefixCode + model.SymCode;
            if (model.Users == null)
            {
                saveModel.UserRoles.Clear();
            }
            else
            {
                var existingRoles = saveModel.UserRoles.ToList();
                var rolesToDel    = existingRoles.Where(r => r.CompID != null || r.RoleId < (int)RoleEnum.Admin).ToList();
                foreach (var r in rolesToDel)
                {
                    existingRoles.Remove(r);
                }
                rolesToDel.AddRange(existingRoles.Where(r => model.Users.Count(um => um.UserId == r.UserId && um.IsAdmin) < 1));
                foreach (var r in rolesToDel)
                {
                    existingRoles.Remove(r);
                }
                foreach (var um in model.Users.Where(um => um.IsAdmin && existingRoles.Count(r => r.UserId == um.UserId) < 1))
                {
                    saveModel.UserRoles.Add(new UserRoleModel {
                        UserId = um.UserId, CompID = null, RoleId = (int)RoleEnum.Admin
                    });
                }
                foreach (var r in rolesToDel)
                {
                    db.UserRoles.Remove(r);
                }
            }
            db.SaveChanges();
            model.Iid = saveModel.Iid;
            return(new ErrorTuple[0]);
        }