Example #1
0
        public static void SetFormTranslation(TranslationWrapper translation)
        {
            DefineLanguage(translation.NewLang);
            FormTranslation trl = new FormTranslation();

            trl.Component   = translation.Component;
            trl.Form        = translation.Form;
            trl.Language    = translation.NewLang;
            trl.Translation = translation.Translation;
            trl.Translated  = true;
            Crud.Put(trl);
        }
Example #2
0
        public static FormTranslation TranslateCpt(string form, string cpt, string language, string currentLbl = "")
        {
            Logging.Log("Translate component '" + cpt + "' for form " + form + ", language=" + language, Logging.LogLevel.Debug);

            language = language.ToLower();

            DefineLanguage(language);

            var             session = DataConnector.NHibernateConnector.OpenSession();
            FormTranslation ft      = session.CreateCriteria(typeof(FormTranslation))
                                      .Add(Expression.Eq("Language", language))
                                      .Add(Expression.Eq("Form", form))
                                      .Add(Expression.Eq("Component", cpt))
                                      .UniqueResult <FormTranslation>();

            if (!(string.IsNullOrEmpty(ft?.Translation)))
            {
                Logging.Log("Translation found: '" + ft.Translation + "'", Logging.LogLevel.Debug);
                return(ft);
            }
            else
            {
                Logging.Log("Translation not found, looking for English translation", Logging.LogLevel.Debug);
                FormTranslation fte = session.CreateCriteria(typeof(FormTranslation))
                                      .Add(Expression.Eq("Language", "en"))
                                      .Add(Expression.Eq("Form", form))
                                      .Add(Expression.Eq("Component", cpt))
                                      .UniqueResult <FormTranslation>();
                if (!(string.IsNullOrEmpty(fte?.Translation)))
                {
                    Logging.Log("Translation found: '" + fte.Translation + "'", Logging.LogLevel.Debug);
                    return(fte);
                }
                else
                {
                    Logging.Log("Translation not found, creating new translation record", Logging.LogLevel.Debug);
                    ft             = new FormTranslation();
                    ft.Form        = form;
                    ft.Component   = cpt;
                    ft.Language    = "en";
                    ft.Translation = currentLbl;
                    ft.Translated  = false;
                    Crud.Add(ft);
                    Logging.Log("Translation record added", Logging.LogLevel.Debug);
                    return(ft);
                }
            }
        }
Example #3
0
        public static IList <TranslationWrapper> GetFormTranslationsByForm(string form, string language, bool onlyNotTranslated)
        {
            IList <TranslationWrapper> resultList = new List <TranslationWrapper>();

            using (var session = DataConnector.NHibernateConnector.OpenSession())
            {
                IList <FormTranslation> fte = session.CreateCriteria(typeof(FormTranslation))
                                              .Add(Expression.Eq("Language", "en"))
                                              .Add(Expression.InsensitiveLike("Form", "%" + form + "%"))
                                              .List <FormTranslation>();

                foreach (FormTranslation tr in fte)
                {
                    FormTranslation ftt = session.CreateCriteria(typeof(FormTranslation))
                                          .Add(Expression.Eq("Language", language))
                                          .Add(Expression.Eq("Form", tr.Form))
                                          .Add(Expression.Eq("Component", tr.Component))
                                          .UniqueResult <FormTranslation>();
                    if ((onlyNotTranslated && string.IsNullOrEmpty(ftt?.Translation)) || !onlyNotTranslated)
                    {
                        TranslationWrapper tw = new TranslationWrapper();
                        tw.Form        = tr.Form;
                        tw.Component   = tr.Component;
                        tw.English     = tr.Translation;
                        tw.NewLang     = language;
                        tw.Translation = "";
                        if (!(string.IsNullOrEmpty(ftt?.Translation)))
                        {
                            tw.Translation = ftt.Translation;
                        }
                        resultList.Add(tw);
                    }
                }
            }
            return(resultList);
        }
Example #4
0
        public void Import(string filePath, IOrganizationService service, BackgroundWorker worker = null)
        {
            var stream = File.OpenRead(filePath);
            var file   = new ExcelPackage(stream);

            var emds = new List <EntityMetadata>();

            var  forms               = new List <Entity>();
            var  ft                  = new FormTranslation();
            var  st                  = new SiteMapTranslation();
            var  db                  = new DashboardTranslation();
            bool hasFormContent      = false;
            bool hasDashboardContent = false;
            bool hasSiteMapContent   = false;

            foreach (var sheet in file.Workbook.Worksheets)
            {
                switch (sheet.Name)
                {
                case "Entities":
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing entities translations...");
                    }

                    var et = new EntityTranslation();
                    et.Import(sheet, emds, service);
                    break;

                case "Attributes":
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing attributes translations...");
                    }

                    var at = new AttributeTranslation();
                    at.Import(sheet, emds, service);
                    break;

                case "Relationships":
                {
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing Relationships with custom label translations...");
                    }

                    var rt = new RelationshipTranslation();
                    rt.Import(sheet, emds, service);
                    break;
                }

                case "RelationshipsNN":
                {
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing NN Relationships with custom label translations...");
                    }

                    var rtNn = new RelationshipNnTranslation();
                    rtNn.Import(sheet, emds, service);
                    break;
                }

                case "Global OptionSets":
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing global optionsets translations...");
                    }

                    var got = new GlobalOptionSetTranslation();
                    got.Import(sheet, service);
                    break;

                case "OptionSets":
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing optionsets translations...");
                    }

                    var ot = new OptionSetTranslation();
                    ot.Import(sheet, service);
                    break;

                case "Booleans":
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing booleans translations...");
                    }

                    var bt = new BooleanTranslation();
                    bt.Import(sheet, service);
                    break;

                case "Views":
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing views translations...");
                    }

                    var vt = new ViewTranslation();
                    vt.Import(sheet, service);
                    break;

                case "Charts":
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing charts translations...");
                    }

                    var vt2 = new VisualizationTranslation();
                    vt2.Import(sheet, service);
                    break;

                case "Forms":
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing forms translations...");
                    }

                    ft.ImportFormName(sheet, service);
                    break;

                case "Forms Tabs":
                    ft.PrepareFormTabs(sheet, service, forms);
                    hasFormContent = true;
                    break;

                case "Forms Sections":
                    ft.PrepareFormSections(sheet, service, forms);
                    hasFormContent = true;
                    break;

                case "Forms Fields":
                    ft.PrepareFormLabels(sheet, service, forms);
                    hasFormContent = true;
                    break;

                case "Dashboards":
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing dashboard translations...");
                    }

                    db.ImportFormName(sheet, service);
                    break;

                case "Dashboards Tabs":
                    db.PrepareFormTabs(sheet, service, forms);
                    hasDashboardContent = true;
                    break;

                case "Dashboards Sections":
                    db.PrepareFormSections(sheet, service, forms);
                    hasDashboardContent = true;
                    break;

                case "Dashboards Fields":
                    db.PrepareFormLabels(sheet, service, forms);
                    hasDashboardContent = true;
                    break;

                case "SiteMap Areas":
                    st.PrepareAreas(sheet, service);
                    hasSiteMapContent = true;
                    break;

                case "SiteMap Groups":
                    st.PrepareGroups(sheet, service);
                    hasSiteMapContent = true;
                    break;

                case "SiteMap SubAreas":
                    st.PrepareSubAreas(sheet, service);
                    hasSiteMapContent = true;
                    break;
                }

                if (hasFormContent)
                {
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing form content translations...");
                    }

                    ft.ImportFormsContent(service, forms);
                }

                if (hasDashboardContent)
                {
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing dashboard content translations...");
                    }

                    db.ImportFormsContent(service, forms);
                }

                if (hasSiteMapContent)
                {
                    if (worker != null && worker.WorkerReportsProgress)
                    {
                        worker.ReportProgress(0, "Importing SiteMap translations...");
                    }

                    st.Import(service);
                }
            }

            if (worker != null && worker.WorkerReportsProgress)
            {
                worker.ReportProgress(0, "Publishing customizations...");
            }

            var paxRequest = new PublishAllXmlRequest();

            service.Execute(paxRequest);
        }
Example #5
0
        public void Export(ExportSettings settings, IOrganizationService service, BackgroundWorker worker = null)
        {
            // Loading available languages
            if (worker != null && worker.WorkerReportsProgress)
            {
                worker.ReportProgress(0, "Loading provisioned languages...");
            }
            var lcidRequest  = new RetrieveProvisionedLanguagesRequest();
            var lcidResponse = (RetrieveProvisionedLanguagesResponse)service.Execute(lcidRequest);
            var lcids        = lcidResponse.RetrieveProvisionedLanguages.Select(lcid => lcid).ToList();

            // Loading entities
            var emds = new List <EntityMetadata>();

            if (worker != null && worker.WorkerReportsProgress)
            {
                worker.ReportProgress(0, "Loading selected entities...");
            }
            foreach (string entityLogicalName in settings.Entities)
            {
                var filters = EntityFilters.Default;
                if (settings.ExportEntities)
                {
                    filters = filters | EntityFilters.Entity;
                }
                if (settings.ExportCustomizedRelationships)
                {
                    filters = filters | EntityFilters.Relationships;
                }
                if (settings.ExportAttributes || settings.ExportOptionSet || settings.ExportBooleans)
                {
                    filters = filters | EntityFilters.Attributes;
                }

                var request = new RetrieveEntityRequest {
                    LogicalName = entityLogicalName, EntityFilters = filters
                };
                var response = (RetrieveEntityResponse)service.Execute(request);
                emds.Add(response.EntityMetadata);
            }

            var file = new ExcelPackage();

            file.File = new FileInfo(settings.FilePath);

            if (settings.ExportEntities && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting entities translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Entities");
                var et    = new EntityTranslation();
                et.Export(emds, lcids, sheet);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportAttributes && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting attributes translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Attributes");
                var at    = new AttributeTranslation();
                at.Export(emds, lcids, sheet);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportCustomizedRelationships && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting relationships with custom labels translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Relationships");
                var rt    = new RelationshipTranslation();
                rt.Export(emds, lcids, sheet);
                StyleMutator.FontDefaults(sheet);

                var sheetNn = file.Workbook.Worksheets.Add("RelationshipsNN");
                var rtNn    = new RelationshipNnTranslation();
                rtNn.Export(emds, lcids, sheetNn);
                StyleMutator.FontDefaults(sheetNn);
            }

            if (settings.ExportGlobalOptionSet)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting global optionsets translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Global OptionSets");
                var ot    = new GlobalOptionSetTranslation();
                ot.Export(lcids, sheet, service);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportOptionSet && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting optionset translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("OptionSets");
                var ot    = new OptionSetTranslation();
                ot.Export(emds, lcids, sheet);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportBooleans && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting booleans translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Booleans");

                var bt = new BooleanTranslation();
                bt.Export(emds, lcids, sheet);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportViews && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting views translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Views");
                var vt    = new ViewTranslation();
                vt.Export(emds, lcids, sheet, service);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportCharts && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting Charts translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Charts");
                var vt    = new VisualizationTranslation();
                vt.Export(emds, lcids, sheet, service);
                StyleMutator.FontDefaults(sheet);
            }

            if ((settings.ExportForms || settings.ExportFormTabs || settings.ExportFormSections || settings.ExportFormFields) && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting forms translations...");
                }

                var ft = new FormTranslation();

                ft.Export(emds, lcids, file.Workbook, service,
                          new FormExportOption
                {
                    ExportForms        = settings.ExportForms,
                    ExportFormTabs     = settings.ExportFormTabs,
                    ExportFormSections = settings.ExportFormSections,
                    ExportFormFields   = settings.ExportFormFields
                });
            }

            if (settings.ExportSiteMap)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting SiteMap custom labels translations...");
                }

                var st = new SiteMapTranslation();

                st.Export(lcids, file.Workbook, service);
            }

            if (settings.ExportDashboards)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting Dashboards custom labels translations...");
                }

                var st = new DashboardTranslation();

                st.Export(lcids, file.Workbook, service);
            }

            file.Save();

            if (DialogResult.Yes == MessageBox.Show("Do you want to open generated document?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
            {
                Process.Start(settings.FilePath);
            }
        }
Example #6
0
        public void Import(string filePath, IOrganizationService service, BackgroundWorker worker = null)
        {
            using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                var file = new ExcelPackage(stream);

                var emds = new List <EntityMetadata>();

                var  forms               = new List <Entity>();
                var  ft                  = new FormTranslation();
                var  st                  = new SiteMapTranslation();
                var  db                  = new DashboardTranslation();
                bool hasFormContent      = false;
                bool hasDashboardContent = false;
                bool hasSiteMapContent   = false;

                var count = file.Workbook.Worksheets.Count(x =>
                                                           !x.Name.StartsWith("Forms ") && !x.Name.StartsWith("Dashboards ") &&
                                                           !x.Name.StartsWith("SiteMap "));

                var hasFormElts      = file.Workbook.Worksheets.Any(x => x.Name.StartsWith("Forms "));
                var hasDashboardElts = file.Workbook.Worksheets.Any(x => x.Name.StartsWith("Dashboards "));
                var hasSiteMapElts   = file.Workbook.Worksheets.Any(x => x.Name.StartsWith("SiteMap "));

                if (hasFormElts)
                {
                    count++;
                }

                if (hasDashboardElts)
                {
                    count++;
                }

                if (hasSiteMapElts)
                {
                    count++;
                }

                int overallProgress = 0;
                foreach (var sheet in file.Workbook.Worksheets)
                {
                    try
                    {
                        switch (sheet.Name)
                        {
                        case "Entities":
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing entities translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            var et = new EntityTranslation();
                            et.Result += Engine_OnResult;
                            et.Import(sheet, emds, service, worker);

                            break;

                        case "Attributes":
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing attributes translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            var at = new AttributeTranslation();
                            at.Result += Engine_OnResult;
                            at.Import(sheet, emds, service, worker);
                            break;

                        case "Relationships":
                        {
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                                {
                                    Message = "Importing Relationships with custom label translations...",
                                    Item    = 1,
                                    Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                                });

                            var rt = new RelationshipTranslation();
                            rt.Result += Engine_OnResult;
                            rt.Import(sheet, emds, service, worker);
                            break;
                        }

                        case "RelationshipsNN":
                        {
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                                {
                                    Message = "Importing NN Relationships with custom label translations...",
                                    Item    = 1,
                                    Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                                });

                            var rtNn = new RelationshipNnTranslation();
                            rtNn.Result += Engine_OnResult;
                            rtNn.Import(sheet, emds, service, worker);
                            break;
                        }

                        case "Global OptionSets":
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing global optionsets translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            var got = new GlobalOptionSetTranslation();
                            got.Result += Engine_OnResult;
                            got.Import(sheet, service, worker);
                            break;

                        case "OptionSets":
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing optionsets translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            var ot = new OptionSetTranslation();
                            ot.Result += Engine_OnResult;
                            ot.Import(sheet, service, worker);
                            break;

                        case "Booleans":
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing booleans translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            var bt = new BooleanTranslation();
                            bt.Result += Engine_OnResult;
                            bt.Import(sheet, service, worker);
                            break;

                        case "Views":
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing views translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            var vt = new ViewTranslation();
                            vt.Result += Engine_OnResult;
                            vt.Import(sheet, service, worker);
                            break;

                        case "Charts":
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing charts translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            var vt2 = new VisualizationTranslation();
                            vt2.Result += Engine_OnResult;
                            vt2.Import(sheet, service, worker);
                            break;

                        case "Forms":
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing forms translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            ft.ImportFormName(sheet, service, worker);
                            break;

                        case "Forms Tabs":
                            ft.PrepareFormTabs(sheet, service, forms);
                            hasFormContent = true;
                            break;

                        case "Forms Sections":
                            ft.PrepareFormSections(sheet, service, forms);
                            hasFormContent = true;
                            break;

                        case "Forms Fields":
                            ft.PrepareFormLabels(sheet, service, forms);
                            hasFormContent = true;
                            break;

                        case "Dashboards":
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing dashboard translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            db.ImportFormName(sheet, service, worker);
                            break;

                        case "Dashboards Tabs":
                            db.PrepareFormTabs(sheet, service, forms);
                            hasDashboardContent = true;
                            break;

                        case "Dashboards Sections":
                            db.PrepareFormSections(sheet, service, forms);
                            hasDashboardContent = true;
                            break;

                        case "Dashboards Fields":
                            db.PrepareFormLabels(sheet, service, forms);
                            hasDashboardContent = true;
                            break;

                        case "SiteMap Areas":
                            st.PrepareAreas(sheet, service);
                            hasSiteMapContent = true;
                            break;

                        case "SiteMap Groups":
                            st.PrepareGroups(sheet, service);
                            hasSiteMapContent = true;
                            break;

                        case "SiteMap SubAreas":
                            st.PrepareSubAreas(sheet, service);
                            hasSiteMapContent = true;
                            break;
                        }

                        if (hasFormContent)
                        {
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing form content translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            ft.ImportFormsContent(service, forms, worker);
                        }

                        if (hasDashboardContent)
                        {
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing dashboard content translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            db.ImportFormsContent(service, forms, worker);
                        }

                        if (hasSiteMapContent)
                        {
                            worker.ReportProgressIfPossible(0, new ProgressInfo
                            {
                                Message = "Importing SiteMap translations...",
                                Item    = 1,
                                Overall = overallProgress == 0 ? 1 : overallProgress * 100 / count
                            });

                            st.Import(service);
                        }
                    }
                    catch (Exception error)
                    {
                        Engine_OnResult(this, new TranslationResultEventArgs
                        {
                            Success   = false,
                            SheetName = sheet.Name,
                            Message   = error.Message
                        });
                    }
                    finally
                    {
                        overallProgress++;
                    }
                }

                worker.ReportProgressIfPossible(0, new ProgressInfo
                {
                    Message = "Publishing customizations...",
                    Item    = 100,
                    Overall = 100
                });

                var paxRequest = new PublishAllXmlRequest();
                service.Execute(paxRequest);

                worker.ReportProgressIfPossible(0, new ProgressInfo
                {
                    Message = "",
                    Item    = 100,
                    Overall = 100
                });
            }
        }
        public void Export(ExportSettings settings, IOrganizationService service, ConnectionDetail detail, BackgroundWorker worker = null)
        {
            List <int> lcids;

            if (settings.LanguageToExport != -1)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Loading environment base language...");
                }
                var baseLanguageCode = service.RetrieveMultiple(new QueryExpression("organization")
                {
                    ColumnSet = new ColumnSet("languagecode")
                }).Entities.First().GetAttributeValue <int>("languagecode");

                lcids = new List <int> {
                    baseLanguageCode, settings.LanguageToExport
                }.Distinct().ToList();
            }
            else
            {
                // Loading available languages
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Loading provisioned languages...");
                }
                var lcidRequest  = new RetrieveProvisionedLanguagesRequest();
                var lcidResponse = (RetrieveProvisionedLanguagesResponse)service.Execute(lcidRequest);
                lcids = lcidResponse.RetrieveProvisionedLanguages.Select(lcid => lcid).ToList();
            }

            // Loading entities
            var emds = new List <EntityMetadata>();

            if (worker != null && worker.WorkerReportsProgress)
            {
                worker.ReportProgress(0, "Loading selected entities...");
            }
            foreach (string entityLogicalName in settings.Entities)
            {
                var filters = EntityFilters.Default;
                if (settings.ExportEntities)
                {
                    filters = filters | EntityFilters.Entity;
                }
                if (settings.ExportCustomizedRelationships)
                {
                    filters = filters | EntityFilters.Relationships;
                }
                if (settings.ExportAttributes || settings.ExportOptionSet || settings.ExportBooleans)
                {
                    filters = filters | EntityFilters.Attributes;
                }

                var request = new RetrieveEntityRequest {
                    LogicalName = entityLogicalName, EntityFilters = filters
                };
                var response = (RetrieveEntityResponse)service.Execute(request);
                emds.Add(response.EntityMetadata);
            }

            var file = new ExcelPackage();

            file.File = new FileInfo(settings.FilePath);

            if (settings.ExportEntities && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting entities translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Entities");
                var et    = new EntityTranslation();
                et.Export(emds, lcids, sheet, settings);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportAttributes && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting attributes translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Attributes");
                var at    = new AttributeTranslation();
                at.Export(emds, lcids, sheet, settings);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportCustomizedRelationships && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting relationships with custom labels translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Relationships");
                var rt    = new RelationshipTranslation();
                rt.Export(emds, lcids, sheet);
                StyleMutator.FontDefaults(sheet);

                var sheetNn = file.Workbook.Worksheets.Add("RelationshipsNN");
                var rtNn    = new RelationshipNnTranslation();
                rtNn.Export(emds, lcids, sheetNn);
                StyleMutator.FontDefaults(sheetNn);
            }

            if (settings.ExportGlobalOptionSet)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting global optionsets translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Global OptionSets");
                var ot    = new GlobalOptionSetTranslation();
                ot.Export(lcids, sheet, service, settings);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportOptionSet && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting optionset translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("OptionSets");
                var ot    = new OptionSetTranslation();
                ot.Export(emds, lcids, sheet, settings);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportBooleans && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting booleans translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Booleans");

                var bt = new BooleanTranslation();
                bt.Export(emds, lcids, sheet, settings);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportViews && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting views translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Views");
                var vt    = new ViewTranslation();
                vt.Export(emds, lcids, sheet, service, settings);
                StyleMutator.FontDefaults(sheet);
            }

            if (settings.ExportCharts && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting Charts translations...");
                }

                var sheet = file.Workbook.Worksheets.Add("Charts");
                var vt    = new VisualizationTranslation();
                vt.Export(emds, lcids, sheet, service, settings);
                StyleMutator.FontDefaults(sheet);
            }

            if ((settings.ExportForms || settings.ExportFormTabs || settings.ExportFormSections || settings.ExportFormFields) && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting forms translations...");
                }

                var ft = new FormTranslation();

                ft.Export(emds, lcids, file.Workbook, service,
                          new FormExportOption
                {
                    ExportForms        = settings.ExportForms,
                    ExportFormTabs     = settings.ExportFormTabs,
                    ExportFormSections = settings.ExportFormSections,
                    ExportFormFields   = settings.ExportFormFields
                }, settings);
            }

            if (settings.ExportSiteMap)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting SiteMap custom labels translations...");
                }

                var st = new SiteMapTranslation();

                st.Export(lcids, file.Workbook, service, settings, detail);
            }

            if (settings.ExportDashboards)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting Dashboards custom labels translations...");
                }

                var st = new DashboardTranslation();

                st.Export(lcids, file.Workbook, service, settings);
            }

            file.Save();
        }
Example #8
0
        public void Export(ExportSettings settings, IOrganizationService service, BackgroundWorker worker = null)
        {
            // Loading available languages
            if (worker != null && worker.WorkerReportsProgress)
            {
                worker.ReportProgress(0, "Loading provisioned languages...");
            }
            var lcidRequest  = new RetrieveProvisionedLanguagesRequest();
            var lcidResponse = (RetrieveProvisionedLanguagesResponse)service.Execute(lcidRequest);
            var lcids        = lcidResponse.RetrieveProvisionedLanguages.Select(lcid => lcid).ToList();

            // Loading entities
            var emds = new List <EntityMetadata>();

            if (worker != null && worker.WorkerReportsProgress)
            {
                worker.ReportProgress(0, "Loading selected entities...");
            }
            foreach (string entityLogicalName in settings.Entities)
            {
                var request = new RetrieveEntityRequest {
                    LogicalName = entityLogicalName, EntityFilters = EntityFilters.Attributes
                };
                var response = (RetrieveEntityResponse)service.Execute(request);
                emds.Add(response.EntityMetadata);
            }
#if NO_GEMBOX
            var file = new ExcelPackage(new FileInfo(settings.FilePath));
#else
            var file = new ExcelFile();
#endif
            if (settings.ExportEntities && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting entities translations...");
                }

#if NO_GEMBOX
                var sheet = file.Workbook.Worksheets.Add("Entities");
                var et    = new EntityTranslation();
                et.Export(emds, lcids, sheet);
                StyleMutator.FontDefaults(sheet);
#else
                var sheet = file.Worksheets.Add("Entities");
                var et    = new EntityTranslation();
                et.Export(emds, lcids, sheet);
#endif
            }

            if (settings.ExportAttributes && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting attributes translations...");
                }
#if NO_GEMBOX
                var sheet = file.Workbook.Worksheets.Add("Attributes");
                var at    = new AttributeTranslation();
                at.Export(emds, lcids, sheet);
                StyleMutator.FontDefaults(sheet);
#else
                var sheet = file.Worksheets.Add("Attributes");
                var at    = new AttributeTranslation();
                at.Export(emds, lcids, sheet);
#endif
            }

            if (settings.ExportGlobalOptionSet)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting global optionsets translations...");
                }
#if NO_GEMBOX
                var sheet = file.Workbook.Worksheets.Add("Global OptionSets");
                var ot    = new GlobalOptionSetTranslation();
                ot.Export(lcids, sheet, service);
                StyleMutator.FontDefaults(sheet);
#else
                var sheet = file.Worksheets.Add("Global OptionSets");
                var ot    = new GlobalOptionSetTranslation();
                ot.Export(lcids, sheet, service);
#endif
            }

            if (settings.ExportOptionSet && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting optionset translations...");
                }

#if NO_GEMBOX
                var sheet = file.Workbook.Worksheets.Add("OptionSets");
                var ot    = new OptionSetTranslation();
                ot.Export(emds, lcids, sheet);
                StyleMutator.FontDefaults(sheet);
#else
                var sheet = file.Worksheets.Add("OptionSets");
                var ot    = new OptionSetTranslation();
                ot.Export(emds, lcids, sheet);
#endif
            }

            if (settings.ExportBooleans && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting booleans translations...");
                }

#if NO_GEMBOX
                var sheet = file.Workbook.Worksheets.Add("Booleans");

                var bt = new BooleanTranslation();
                bt.Export(emds, lcids, sheet);
                StyleMutator.FontDefaults(sheet);
#else
                var sheet = file.Worksheets.Add("Booleans");

                var bt = new BooleanTranslation();
                bt.Export(emds, lcids, sheet);
#endif
            }

            if (settings.ExportViews && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting views translations...");
                }

#if NO_GEMBOX
                var sheet = file.Workbook.Worksheets.Add("Views");
                var vt    = new ViewTranslation();
                vt.Export(emds, lcids, sheet, service);
                StyleMutator.FontDefaults(sheet);
#else
                var sheet = file.Worksheets.Add("Views");
                var vt    = new ViewTranslation();
                vt.Export(emds, lcids, sheet, service);
#endif
            }

            if ((settings.ExportForms || settings.ExportFormTabs || settings.ExportFormSections || settings.ExportFormFields) && emds.Count > 0)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting forms translations...");
                }

                var ft = new FormTranslation();
#if NO_GEMBOX
                ft.Export(emds, lcids, file.Workbook, service,
#else
                ft.Export(emds, lcids, file, service,
#endif
                          new FormExportOption
                {
                    ExportForms        = settings.ExportForms,
                    ExportFormTabs     = settings.ExportFormTabs,
                    ExportFormSections = settings.ExportFormSections,
                    ExportFormFields   = settings.ExportFormFields
                });
            }

            if (settings.ExportSiteMap)
            {
                if (worker != null && worker.WorkerReportsProgress)
                {
                    worker.ReportProgress(0, "Exporting SiteMap custom labels translations...");
                }

                var st = new SiteMapTranslation();

#if NO_GEMBOX
                st.Export(lcids, file.Workbook, service);
#else
                st.Export(lcids, file, service);
#endif
            }

#if NO_GEMBOX
            file.Save();
#else
            file.Save(settings.FilePath, SaveOptions.XlsxDefault);
#endif
        }