public JsonResult ChangeLanguageStatus(int ID, bool disable = true)
        {
            JsonResult json = new JsonResult();

            try
            {
                var language = LanguagesService.Instance.GetLanguageByID(ID);

                if (language == null)
                {
                    throw new Exception("Dashboard.Languages.Action.Validation.LanguageNotFound".LocalizedString());
                }

                if (disable)
                {
                    if (language.IsDefault)
                    {
                        throw new Exception("Dashboard.Languages.Action.Validation.DefaultLanguageCantBeDisabled".LocalizedString());
                    }

                    language.IsEnabled = false;
                }
                else
                {
                    language.IsEnabled = true;
                }

                if (!LanguagesService.Instance.UpdateLanguage(language))
                {
                    throw new Exception("Dashboard.Languages.Action.Validation.UnableToUpdateLanguage".LocalizedString());
                }

                var enabledLanguages = LanguagesService.Instance.GetLanguages(enabledLanguagesOnly: true);
                LanguagesHelper.LoadLanguages(enabledLanguages: enabledLanguages, defaultLanguage: enabledLanguages.FirstOrDefault(x => x.IsDefault));


                json.Data = new { Success = true };
            }
            catch (Exception ex)
            {
                json.Data = new { Success = false, Message = ex.Message };
            }

            return(json);
        }
        public JsonResult Action(LanguageActionViewModel model)
        {
            JsonResult json = new JsonResult();

            try
            {
                if (model.ID > 0)
                {
                    var language = LanguagesService.Instance.GetLanguageByID(model.ID);

                    if (language == null)
                    {
                        throw new Exception("Dashboard.Languages.Action.Validation.LanguageNotFound".LocalizedString());
                    }

                    language.ID        = model.ID;
                    language.Name      = model.Name;
                    language.ShortCode = model.ShortCode;
                    language.IsEnabled = model.IsEnabled;

                    if (language.IsDefault && !model.IsDefault)
                    {
                        throw new Exception("Dashboard.Languages.Action.Validation.DefaultLanguageIsMust".LocalizedString());
                    }

                    var makeDefault = false;
                    if (model.IsDefault)
                    {
                        if (!language.IsDefault)
                        {
                            language.IsDefault = true;
                            makeDefault        = true;
                        }
                    }
                    else
                    {
                        language.IsDefault = false;
                    }

                    language.IsRTL    = model.IsRTL;
                    language.IconCode = model.IconCode;

                    if (!LanguagesService.Instance.UpdateLanguage(language, makeDefault))
                    {
                        throw new Exception("Dashboard.Languages.Action.Validation.UnableToUpdateLanguage".LocalizedString());
                    }
                }
                else
                {
                    var language = new Language
                    {
                        Name      = model.Name,
                        ShortCode = model.ShortCode,
                        IsEnabled = model.IsEnabled,
                        IsDefault = model.IsDefault,
                        IsRTL     = model.IsRTL,
                        IconCode  = model.IconCode
                    };

                    var makeDefault = false;
                    if (model.IsDefault)
                    {
                        language.IsDefault = true;
                        makeDefault        = true;
                    }
                    else
                    {
                        language.IsDefault = false;
                    }


                    if (!LanguagesService.Instance.AddLanguage(language, makeDefault))
                    {
                        throw new Exception("Dashboard.Languages.Action.Validation.UnableToCreateLanguage".LocalizedString());
                    }
                }

                var enabledLanguages = LanguagesService.Instance.GetLanguages(enabledLanguagesOnly: true);
                LanguagesHelper.LoadLanguages(enabledLanguages: enabledLanguages, defaultLanguage: enabledLanguages.FirstOrDefault(x => x.IsDefault));

                json.Data = new { Success = true };
            }
            catch (Exception ex)
            {
                json.Data = new { Success = false, Message = ex.Message };
            }

            return(json);
        }