public string SaveSubjectToClauseWordingsForTeamOffice(TeamSubjectToClauseWordingsDto teamSubjectToClauseWordingsDto)
        {
            using (ConsoleRepository)
            {
                // Check does Team Market wordings exist
                var team = ConsoleRepository.Query<Team>(t => t.Id == teamSubjectToClauseWordingsDto.TeamId, t => t.TeamOfficeSettings.Select(tos => tos.Office), t => t.TeamOfficeSettings.Select(tos => tos.SubjectToClauseWordingSettings.Select(mws => mws.SubjectToClauseWording))).FirstOrDefault();

                bool teamOfficeSubjectToClauseWordingSettingsChanged = false;
                if (team != null)
                {
                    //<??> create office setting if one doesn't exist
                    if (team.TeamOfficeSettings == null ||
                        !team.TeamOfficeSettings.Any(tos => tos.Office.Id == teamSubjectToClauseWordingsDto.OfficeId))
                    {
                        team.TeamOfficeSettings = team.TeamOfficeSettings ?? new List<TeamOfficeSetting>();
                        team.TeamOfficeSettings.Add(new TeamOfficeSetting { Office = ConsoleRepository.Query<Office>(o => o.Id == teamSubjectToClauseWordingsDto.OfficeId).First(), SubjectToClauseWordingSettings = new List<SubjectToClauseWordingSetting>() });

                    }

                    var teamOfficeSetting =
                        team.TeamOfficeSettings.First(tos => tos.Office.Id == teamSubjectToClauseWordingsDto.OfficeId);
                    // Remove SubjectToClauseWording that need to be removed

                    var currentTeamOfficeSubjectToClauseWordings = teamOfficeSetting.SubjectToClauseWordingSettings.Select(mws => mws.SubjectToClauseWording.Id).ToList();
                    var teamOfficeSubjectToClauseWordingsToRemove =
                        currentTeamOfficeSubjectToClauseWordings.Except(teamSubjectToClauseWordingsDto.SubjectToClauseWordingSettingDtoList != null ? teamSubjectToClauseWordingsDto.SubjectToClauseWordingSettingDtoList.Select(tnos => tnos.Id) : new List<int>()).ToList();

                    foreach (var teamOfficeSubjectToClauseWordingId in teamOfficeSubjectToClauseWordingsToRemove)
                    {
                        var teamOfficeSubjectToClauseWordingToDelete =
                            ConsoleRepository.Query<SubjectToClauseWording>().FirstOrDefault(mw => mw.Id == teamOfficeSubjectToClauseWordingId);

                        if (teamOfficeSubjectToClauseWordingToDelete != null)
                        {
                            var teamOfficeSubjectToClauseWordingSettingsToDelete = teamOfficeSetting.SubjectToClauseWordingSettings.FirstOrDefault(mws => mws.SubjectToClauseWording.Equals(teamOfficeSubjectToClauseWordingToDelete));
                            //teamOfficeSetting.SubjectToClauseWordingSettings.Remove(teamOfficeSubjectToClauseWordingSettingsToDelete);
                            ConsoleRepository.Delete(teamOfficeSubjectToClauseWordingSettingsToDelete);
                            teamOfficeSubjectToClauseWordingSettingsChanged = true;
                        }
                    }

                    // Add SubjectToClauseWordings that need to be added
                    foreach (var subjectToClauseWordingSetting in teamSubjectToClauseWordingsDto.SubjectToClauseWordingSettingDtoList ?? new List<SubjectToClauseWordingSettingDto>())
                    {
                        if (teamOfficeSetting.SubjectToClauseWordingSettings.Any(mws => mws.SubjectToClauseWording.Id == subjectToClauseWordingSetting.Id)) continue;
                        var subjectToClauseWordingToAdd =
                            ConsoleRepository.Query<SubjectToClauseWording>().FirstOrDefault(a => a.Id == subjectToClauseWordingSetting.Id);

                        teamOfficeSetting.SubjectToClauseWordingSettings.Add(new SubjectToClauseWordingSetting { SubjectToClauseWording = subjectToClauseWordingToAdd });
                        teamOfficeSubjectToClauseWordingSettingsChanged = true;
                    }

                    //Update display order
                    foreach (
                        var subjectToClauseWordingSettingDto in
                            teamSubjectToClauseWordingsDto.SubjectToClauseWordingSettingDtoList ?? new List<SubjectToClauseWordingSettingDto>())
                    {
                        var subjectToClauseWordingSetting = teamOfficeSetting.SubjectToClauseWordingSettings.First(
                            tncs => tncs.SubjectToClauseWording.Id == subjectToClauseWordingSettingDto.Id);
                        if (subjectToClauseWordingSetting.DisplayOrder != subjectToClauseWordingSettingDto.DisplayOrder ||
                            subjectToClauseWordingSetting.IsStrikeThrough !=
                            subjectToClauseWordingSettingDto.IsStrikeThrough)
                        {

                            subjectToClauseWordingSetting.DisplayOrder = subjectToClauseWordingSettingDto.DisplayOrder;
                            subjectToClauseWordingSetting.IsStrikeThrough =
                                subjectToClauseWordingSettingDto.IsStrikeThrough;
                            teamOfficeSubjectToClauseWordingSettingsChanged = true;
                        }

                    }

                    ConsoleRepository.SaveChanges();

                    if (teamOfficeSubjectToClauseWordingSettingsChanged)
                        return "Saved SubjectToClauseWording(s) for Team-Office";
                    else
                        return "SubjectToClauseWording(s) for Team-Office have not changed";
                }
                else
                {
                    return "Save SubjectToClauseWordings - Team does not Exist";
                }
            }
        }
        public void SaveSubjectToClauseWordingsForTeamOffice()
        {
            using (IConsoleRepository rep = new ConsoleRepository())
            {
                var adminModuleManager = new AdminModuleManager(rep, new LogHandler(), _httpContext.Object, new WebSiteModuleManager(rep, _httpContext.Object));
                adminModuleManager.CreateSubjectToClauseWording(new SubjectToClauseWording
                {
                    WordingRefNumber = "STEST04",
                    Title = "STEST04"
                });
            }

            using (IConsoleRepository rep = new ConsoleRepository())
            {
                var adminModuleManager = new AdminModuleManager(rep, new LogHandler(), _httpContext.Object, new WebSiteModuleManager(rep, _httpContext.Object));
                var tempSubjectToClauseWording = rep.Query<SubjectToClauseWording>(sw => sw.Title == "STEST04").First();
                var subjectToClauseWordingSettingDto = new SubjectToClauseWordingSettingDto
                {
                    Id = tempSubjectToClauseWording.Id,
                    DisplayOrder = 1,
                    Title = "STEST04"
                };


                var teamSubjectToClauseWordingsDto = new TeamSubjectToClauseWordingsDto
                {
                    TeamId = rep.Query<Team>(t => t.Title == "TestTeam").First().Id,
                    OfficeId = "LON",
                    SubjectToClauseWordingSettingDtoList = new List<SubjectToClauseWordingSettingDto> { subjectToClauseWordingSettingDto }
                };
                adminModuleManager.SaveSubjectToClauseWordingsForTeamOffice(teamSubjectToClauseWordingsDto);
            }

            using (IConsoleRepository rep = new ConsoleRepository())
            {
                var team = rep.Query<Team>(t => t.Title == "TestTeam",
                                t => t.TeamOfficeSettings.Select(tos => tos.SubjectToClauseWordingSettings.Select(sw => sw.SubjectToClauseWording))).First();
                Assert.AreEqual("STEST04",
                                team.TeamOfficeSettings.First().SubjectToClauseWordingSettings.First().SubjectToClauseWording.Title);
                _totalSubjectToClauseWording = _totalSubjectToClauseWording + 1;
            }


        }
        public ActionResult SaveSubjectToClauseWordingsForTeamOffice(TeamSubjectToClauseWordingsDto teamSubjectToClauseWordingsDto)
        {
            try
            {
                var result = _adminModuleManager.SaveSubjectToClauseWordingsForTeamOffice(teamSubjectToClauseWordingsDto);

                return new JsonNetResult
                {
                    Data = result
                };
            }
			catch (Exception ex) // TODO: Remove
            {
                _logHandler.WriteLog(ex.ToString(), LogSeverity.Error, LogCategory.BusinessComponent);
                throw new HttpException(500, "Server Error");
            }
        }