Exemple #1
0
        public void EditScenario([FromBody] Scenario input)
        {
            var currentScenario = _scenarioRepository.Scenarios.Where(x => x.Id == input.Id).FirstOrDefault();

            if (currentScenario == null)
            {
                throw new Exception("Такого сценария не существует");
            }
            var children = _userGroupRepository.GetChildrenGroups(GetUserGroupId());

            if (children.Contains(currentScenario.UserGroupId))
            {
                _scenarioRepository.EditScenario(input);
                _scenarioRepository.SaveChanges();
            }
            else
            {
                throw new Exception("Этот сценарий вам не доступен");
            }
        }
        public async Task EditScenario([FromBody] Scenario input)
        {
            if (User.Claims.FirstOrDefault(x => x.Type == ClaimsIdentity.DefaultRoleClaimType).Value ==
                Constants.RoleNames.SimpleUser)
            {
                throw new Exception("Не доступно простому пользователю");
            }
            var currentScenario = _scenarioRepository.Scenarios.FirstOrDefault(x => x.Id == input.Id);

            if (currentScenario == null)
            {
                throw new Exception("Такого сценария не существует");
            }
            if (User.Claims.FirstOrDefault(x => x.Type == ClaimsIdentity.DefaultRoleClaimType).Value ==
                Constants.RoleNames.Admin)
            {
                _scenarioRepository.EditScenario(input);
                foreach (var controller in _connections.All.Include(x => x.Controller)
                         .Where(x => x.ScenarioId == input.Id).Select(x => x.Controller))
                {
                    await ControllerInfoSender.UpdateAsync(controller.Adress, input.Id);
                }
                _scenarioRepository.SaveChanges();
            }
            var children = _userGroupRepository.GetChildrenGroups(GetUserGroupId());

            if (children.Contains(currentScenario.UserGroupId))
            {
                _scenarioRepository.EditScenario(input);
                foreach (var controller in _connections.All.Include(x => x.Controller)
                         .Where(x => x.ScenarioId == input.Id).Select(x => x.Controller))
                {
                    await ControllerInfoSender.UpdateAsync(controller.Adress, input.Id);
                }
                _scenarioRepository.SaveChanges();
            }
            else
            {
                throw new Exception("Этот сценарий вам не доступен");
            }
        }