public void UpdateDoublesOverlay(DoublesViewModel doublesViewModel)
        {
            try
            {
                var doublesCssModel = new DoublesCssModel();

                doublesCssModel.Team1.Name  = _textReplacer.ReplaceIdAndValue(_textTemplateCss, "team1NameText", doublesViewModel.Team1.Name ?? "");
                doublesCssModel.Team1.Score = _textReplacer.ReplaceIdAndValue(_textTemplateCss, "team1ScoreText", doublesViewModel.Team1.Score ?? "?");
                doublesCssModel.Team1.PlayerNamesAndSponsors = _textReplacer.ReplaceIdAndValueForPlayerNames(_textTemplateCss, "team1Player*NameText", doublesViewModel.Team1.Players.Select(p => p.Sponsor).ToList(), doublesViewModel.Team1.Players.Select(p => p.Name).ToList());
                doublesCssModel.Team1.CharacterPaths         = _textReplacer.ReplaceIdAndValueForTeam(_imageTemplateCss, "team1Player*Character", doublesViewModel.Team1.Players.Select(p => p.Character ?? "../../CharacterIcons/random.png").ToList());
                doublesCssModel.Team1.PortPaths = _textReplacer.ReplaceIdAndValueForTeam(_imageTemplateCss, "team1Player*Port", doublesViewModel.Team1.Players.Select(p => p.Port ?? "../../PlayerPorts/playerPortNo.png").ToList());

                doublesCssModel.Team2.Name  = _textReplacer.ReplaceIdAndValue(_textTemplateCss, "team2NameText", doublesViewModel.Team2.Name ?? "");
                doublesCssModel.Team2.Score = _textReplacer.ReplaceIdAndValue(_textTemplateCss, "team2ScoreText", doublesViewModel.Team2.Score ?? "?");
                doublesCssModel.Team2.PlayerNamesAndSponsors = _textReplacer.ReplaceIdAndValueForPlayerNames(_textTemplateCss, "team2Player*NameText", doublesViewModel.Team2.Players.Select(p => p.Sponsor).ToList(), doublesViewModel.Team2.Players.Select(p => p.Name).ToList());
                doublesCssModel.Team2.CharacterPaths         = _textReplacer.ReplaceIdAndValueForTeam(_imageTemplateCss, "team2Player*Character", doublesViewModel.Team2.Players.Select(p => p.Character ?? "../../CharacterIcons/random.png").ToList());
                doublesCssModel.Team2.PortPaths = _textReplacer.ReplaceIdAndValueForTeam(_imageTemplateCss, "team2Player*Port", doublesViewModel.Team2.Players.Select(p => p.Port ?? "../../PlayerPorts/playerPortNo.png").ToList());

                doublesCssModel.Tournament = _textReplacer.ReplaceIdAndValue(_textTemplateCss, "tournamentText", doublesViewModel.Tournament ?? "");
                doublesCssModel.Extra      = _textReplacer.ReplaceIdAndValue(_textTemplateCss, "extraText", doublesViewModel.Extra ?? "");
                doublesCssModel.Round      = _textReplacer.ReplaceIdAndValue(_textTemplateCss, "roundText", doublesViewModel.Round ?? "");
                doublesCssModel.BestOf     = _textReplacer.ReplaceIdAndValue(_textTemplateCss, "bestOfText", doublesViewModel.BestOf ?? "");

                _fileWriter.WriteDoublesCssFile(doublesViewModel.PathToFormat, doublesCssModel);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }
        }
        public JsonResult UpdateDoubles(DoublesViewModel doublesViewModel)
        {
            try
            {
                _smashOverlayManager.UpdateDoublesOverlay(doublesViewModel);

                return(Json(new SnackbarViewModel(true, "Successfully saved competitor files"), JsonRequestBehavior.DenyGet));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return(Json(new SnackbarViewModel(false, "Something went wrong while saving competitor files, see the console for details", ex.Message), JsonRequestBehavior.DenyGet));
            }
        }