From 31fff706c36a18e60020ea80a6778e914bd43bcc Mon Sep 17 00:00:00 2001
From: Marcel Nellesen <nellesen@itc.rwth-aachen.de>
Date: Wed, 6 Nov 2019 09:26:39 +0100
Subject: [PATCH] New: Change the Apps in order to incorporate the bilingual
 compatibility (coscine/issues#432)

---
 src/Project.Tests/DefaultControllerTests.cs     |  3 ++-
 src/Project.Tests/ProjectControllerTests.cs     | 12 ++++++------
 src/Project.Tests/ResourceControllerTests.cs    |  2 +-
 src/Project/Controllers/DisciplineController.cs |  2 +-
 src/Project/Models/ProjectModel.cs              |  4 ++--
 src/Project/Models/ResourceModel.cs             |  2 +-
 src/Project/ReturnObjects/DisciplineObject.cs   |  9 ++++++---
 7 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/src/Project.Tests/DefaultControllerTests.cs b/src/Project.Tests/DefaultControllerTests.cs
index 146d757..23a03e8 100644
--- a/src/Project.Tests/DefaultControllerTests.cs
+++ b/src/Project.Tests/DefaultControllerTests.cs
@@ -46,7 +46,8 @@ namespace Coscine.Api.Project.Tests
             DisciplineModel disciplineModel = new DisciplineModel();
             Discipline = new Discipline()
             {
-                DisplayName = "TestDiscipline",
+                DisplayNameDe = "TestDiscipline",
+                DisplayNameEn = "TestDiscipline",
                 Url = "http://rwth-aachen.de"
             };
             disciplineModel.Insert(Discipline);
diff --git a/src/Project.Tests/ProjectControllerTests.cs b/src/Project.Tests/ProjectControllerTests.cs
index d589250..d779293 100644
--- a/src/Project.Tests/ProjectControllerTests.cs
+++ b/src/Project.Tests/ProjectControllerTests.cs
@@ -105,7 +105,7 @@ namespace Coscine.Api.Project.Tests
         public void TestControllerStore()
         {
             ProjectObject newProjectObject = new ProjectObject(Guid.NewGuid(), "NewProject", "NewDisplayName", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId", 
-                                                                new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) },
+                                                                new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) },
                                                                 new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) },
                                                                 new VisibilityObject(Visibility.Id, Visibility.DisplayName));
 
@@ -140,7 +140,7 @@ namespace Coscine.Api.Project.Tests
         public void TestControllerDelete()
         {
             ProjectObject newProjectObject = new ProjectObject(Guid.NewGuid(), "NewProject", "NewDisplayName", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId",
-                                                                new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) },
+                                                                new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) },
                                                                 new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) },
                                                                 new VisibilityObject(Visibility.Id, Visibility.DisplayName));
 
@@ -174,7 +174,7 @@ namespace Coscine.Api.Project.Tests
         public void TestControllerDeleteWithSubProjects()
         {
             ProjectObject newProjectObject = new ProjectObject(Guid.NewGuid(), "NewProject", "NewDisplayName", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId",
-                                                                new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) },
+                                                                new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) },
                                                                 new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) },
                                                                 new VisibilityObject(Visibility.Id, Visibility.DisplayName));
 
@@ -189,7 +189,7 @@ namespace Coscine.Api.Project.Tests
             stream.Close();
 
             newProjectObject = new ProjectObject(Guid.NewGuid(), "NewProject", "NewDisplayName", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId",
-                                                                new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) },
+                                                                new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) },
                                                                 new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) },
                                                                 new VisibilityObject(Visibility.Id, Visibility.DisplayName),
                                                                 createdProjectObject.Id);
@@ -217,7 +217,7 @@ namespace Coscine.Api.Project.Tests
         public void TestControllerStoreWithSubProject()
         {
             ProjectObject newProjectObject = new ProjectObject(Guid.NewGuid(), "NewProject", "NewDisplayName", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId",
-                                                                    new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) },
+                                                                    new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) },
                                                                     new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) },
                                                                     new VisibilityObject(Visibility.Id, Visibility.DisplayName));
 
@@ -229,7 +229,7 @@ namespace Coscine.Api.Project.Tests
             ProjectObject createdProjectObject = (ProjectObject)okObjectResult.Value;
 
             ProjectObject newSubProjectObject = new ProjectObject(Guid.NewGuid(), "NewSubProject", "NewDisplayNameSub", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId",
-                                                                        new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) },
+                                                                        new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) },
                                                                         new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) },
                                                                         new VisibilityObject(Visibility.Id, Visibility.DisplayName), 
                                                                         createdProjectObject.Id);
diff --git a/src/Project.Tests/ResourceControllerTests.cs b/src/Project.Tests/ResourceControllerTests.cs
index 1cb88c3..6e5736a 100644
--- a/src/Project.Tests/ResourceControllerTests.cs
+++ b/src/Project.Tests/ResourceControllerTests.cs
@@ -94,7 +94,7 @@ namespace Coscine.Api.Project.Tests
                 "keys",
                 "usageR",
                 new ResourceTypeObject(Resources[0].Type.Id, Resources[0].Type.DisplayName),
-                new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) },
+                new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) },
                 new VisibilityObject(Visibility.Id, Visibility.DisplayName),
                 new LicenseObject(License.Id, License.DisplayName),
                 JObject.FromObject(new RDSResourceTypeObject(Guid.NewGuid(), "PITLABTTEST", "accesskey", "secretkey"))
diff --git a/src/Project/Controllers/DisciplineController.cs b/src/Project/Controllers/DisciplineController.cs
index ec9f932..62c1ea0 100644
--- a/src/Project/Controllers/DisciplineController.cs
+++ b/src/Project/Controllers/DisciplineController.cs
@@ -26,7 +26,7 @@ namespace Coscine.Api.Project.Controllers
         {
             return Ok(_authenticator.ValidateAndExecute((user) =>
             {
-                return _disciplineModel.GetAll().Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayName));
+                return _disciplineModel.GetAll().OrderBy(discipline => discipline.DisplayNameDe.Substring(discipline.DisplayNameDe.Length - 3)).Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayNameDe, discipline.DisplayNameEn));
             }));
         }
     }
diff --git a/src/Project/Models/ProjectModel.cs b/src/Project/Models/ProjectModel.cs
index eb76800..97b533d 100644
--- a/src/Project/Models/ProjectModel.cs
+++ b/src/Project/Models/ProjectModel.cs
@@ -172,11 +172,11 @@ namespace Coscine.Api.Project.Models
             {
                 DisciplineModel disciplineModel = new DisciplineModel();
                 disciplines = disciplineModel.GetAllWhere((discipline) => (from relation in discipline.ProjectDisciplineDisciplineIdIds where relation.ProjectId == project.Id select relation).Any())
-                                                .Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayName));
+                                                .Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayNameDe, discipline.DisplayNameEn));
             }
             else
             {
-                disciplines = project.ProjectDisciplineProjectIdIds.Select((discipline) => new DisciplineObject(discipline.Discipline.Id, discipline.Discipline.Url, discipline.Discipline.DisplayName));
+                disciplines = project.ProjectDisciplineProjectIdIds.Select((discipline) => new DisciplineObject(discipline.Discipline.Id, discipline.Discipline.Url, discipline.Discipline.DisplayNameDe, discipline.Discipline.DisplayNameEn));
             }
             IEnumerable<InstituteObject> institutes = new List<InstituteObject>();
             if (project.ProjectInstituteProjectIdIds == null)
diff --git a/src/Project/Models/ResourceModel.cs b/src/Project/Models/ResourceModel.cs
index ae1b6d7..e273892 100644
--- a/src/Project/Models/ResourceModel.cs
+++ b/src/Project/Models/ResourceModel.cs
@@ -234,7 +234,7 @@ namespace Coscine.Api.Project.Models
                             (from relation in discipline.ResourceDisciplineDisciplineIdIds
                              where relation.ResourceId == resource.Id
                              select relation).Any())
-                            .Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayName));
+                            .Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayNameDe, discipline.DisplayNameEn));
 
             if (resource.Visibility == null && resource.VisibilityId != null)
             {
diff --git a/src/Project/ReturnObjects/DisciplineObject.cs b/src/Project/ReturnObjects/DisciplineObject.cs
index 9352f5e..5a2fed7 100644
--- a/src/Project/ReturnObjects/DisciplineObject.cs
+++ b/src/Project/ReturnObjects/DisciplineObject.cs
@@ -13,13 +13,16 @@ namespace Coscine.Api.Project.ReturnObjects
         public Guid Id { get; set; }
 
         public string Url { get; set; }
-        public string DisplayName { get; set; }
+        public string DisplayNameDe { get; set; }
 
-        public DisciplineObject(Guid id, string url, string displayName)
+        public string DisplayNameEn { get; set; }
+
+        public DisciplineObject(Guid id, string url, string displayNameDe, string displayNameEn)
         {
             Id = id;
             Url = url;
-            DisplayName = displayName;
+            DisplayNameDe = displayNameDe;
+            DisplayNameEn = displayNameEn;
         }
     }
 }
-- 
GitLab