فريق القيادة 

يقود شركة البحر الأحمر الدولية نخبة فذة من الكفاءات ذوي الخبرات العالمية في مجالات الهندسة والاستثمار المالي والتطوير العقاري.

background background

رئيس مجلس الإدارة

صاحب السمو الملكي، الأمير محمد بن سلمان بن عبدالعزيز آل سعود

ولي العهد، رئيس مجلس الوزراء، رئيس مجلس الشؤون الاقتصادية والتنمية، رئيس مجلس إدارة صندوق الاستثمارات العامة
Chairman

Board Members

مجلس الإدارة

avatar

سمو الأمير بدر آل سعود

وزير الثقافة

avatar

معالي الدكتور ماجد القصبي

وزير التجارة

avatar

معالي الأستاذ أحمد الخطيب

وزير السياحة

avatar

معالي المهندس عبدالرحمن الفضلي

وزير البيئة والمياه والزراعة

avatar

معالي الأستاذ ماجد الحقيل

وزير البلديات والإسكان

avatar

معالي الأستاذ ياسر الرميان

محافظ صندوق الاستثمارات العامة

avatar

معالي الدكتور فهد تونسي

الأمين العام، والمستشار في الديوان الملكي السعودي

avatar

المهندس أيمن المديفر

الرئيس التنفيذي - نيوم

avatar

جون باغانو  

الرئيس التنفيذي للمجموعة

Advisory Board Members

حصل خطأ عند معالجة القالب.
Java method "com.sun.proxy.$Proxy826.getLatestArticle(long)" threw an exception when invoked on com.sun.proxy.$Proxy826 object "hu.webtown.liferay.service.wrapper.redsea.journal.article.JournalArticleLocalServiceOverride@4a0eba8f"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign journalArticle = journalArtic...  [in template "20097#20123#45335" in macro "getPersonCard" at line 93, column 9]
	- Reached through: @getPersonCard webContentData.classPK...  [in template "20097#20123#45335" at line 43, column 37]
----
1<#if serviceLocator??> 
2    <#assign journalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
3    <#assign cssClass = "peopleSlider" /> 
4    <#if (theme.getData())??> 
5        <#assign cssClass = cssClass + " peopleSlider--" + theme.getData() /> 
6    </#if> 
7    <#if getterUtil.getBoolean(decorativeBackground.getData())> 
8        <#assign cssClass = cssClass + " peopleSlider--bgOverflow peopleSlider--bgImage" /> 
9    </#if> 
10    <!-- begin sections/peopleSlider --> 
11    <section class="${cssClass}"> 
12        <#if getterUtil.getBoolean(decorativeBackground.getData())> 
13            <img 
14                    class="peopleSlider__bg peopleSlider__bg--1" 
15                    src="${themeDisplay.getPathThemeImages()}/../crafton-frontend/public/images/bg-01-l.svg" 
16                    alt="background" 
17                    loading="lazy" 
18                    role="none" /> 
19            <img 
20                    class="peopleSlider__bg peopleSlider__bg--2" 
21                    src="${themeDisplay.getPathThemeImages()}/../crafton-frontend/public/images/bg-01-r.svg" 
22                    alt="background" 
23                    loading="lazy" 
24                    role="none" /> 
25        </#if> 
26        <div class="peopleSlider__inner wrapper"> 
27            <!-- begin components/heading --> 
28            <div 
29                    class="heading heading--large <#if (theme.getData())?? && theme.getData() == 'navy'>heading--white</#if> peopleSlider__heading"> 
30                <h1 class="heading__subtitle">${title.getData()}</h1> 
31            </div> 
32            <!-- end components/heading --> 
33            <div class="peopleSlider__sliderWrapper" data-people-slider> 
34                <div class="peopleSlider__slider swiper" data-people-slider-slider> 
35                    <div class="peopleSlider__items swiper-wrapper" data-people-slider-item> 
36                        <#if person.getSiblings()?has_content> 
37                            <#list person.getSiblings() as cur_person> 
38                                <#assign 
39                                webContentData = jsonFactoryUtil.createJSONObject(cur_person.getData()) 
40                                /> 
41 
42                                <#if webContentData?? && webContentData.classPK??> 
43                                    <@getPersonCard webContentData.classPK?number cur_person?index/> 
44                                </#if> 
45                            </#list> 
46                        </#if> 
47                    </div> 
48                </div> 
49            </div> 
50        </div> 
51        <script type="text/template" data-popup-id="${randomNamespace}board-members" data-popup-theme="full" data-popup-props="{&quot;onMountEvents&quot;:[[&quot;PeoplePopupSliderCreateNew&quot;] 
52    ]}"> 
53            <!-- begin components/popup/peoplePopup --> 
54            <div class="peoplePopup"> 
55                <div class="peoplePopup__sliderWrapper" data-people-popup-slider="${randomNamespace}board-members"> 
56                    <div class="peoplePopup__slider swiper" data-people-popup-slider-slider> 
57                        <div class="peoplePopup__items swiper-wrapper"> 
58                            <#if person.getSiblings()?has_content> 
59                                <#list person.getSiblings() as cur_person> 
60                                    <#assign 
61                                    webContentData = jsonFactoryUtil.createJSONObject(cur_person.getData()) 
62                                    /> 
63 
64                                    <#if webContentData?? && webContentData.classPK??> 
65                                        <@getPopup webContentData.classPK?number /> 
66                                    </#if> 
67                                </#list> 
68                            </#if> 
69                        </div> 
70                    </div> 
71                    <!-- begin components/sliderNav --> 
72                    <div class="sliderNav peoplePopup__nav" data-people-popup-slider-nav data-slider-nav> 
73                        <!-- begin components/arrowButton --> 
74                        <button class="arrowButton arrowButton--prev arrowButton--default sliderNav__arrow sliderNav__arrow--prev" data-slider-nav-prev> 
75                            <span class="arrowButton__arrow"></span> 
76                        </button> 
77                        <!-- end components/arrowButton --> 
78                        <!-- begin components/arrowButton --> 
79                        <button class="arrowButton arrowButton--next arrowButton--default sliderNav__arrow sliderNav__arrow--next" data-slider-nav-next> 
80                            <span class="arrowButton__arrow"></span> 
81                        </button> 
82                        <!-- end components/arrowButton --> 
83                    </div> 
84                    <!-- end components/sliderNav --> 
85                </div> 
86            </div> 
87            <!-- end components/popup/peoplePopup --> 
88        </script> 
89    </section> 
90    <!-- end sections/peopleSlider --> 
91 
92    <#macro getPersonCard classPK index> 
93        <#assign journalArticle = journalArticleService.getLatestArticle(classPK) /> 
94        <#assign description = journalArticle.getDescription(themeDisplay.getLocale()) /> 
95        <#assign title = journalArticle.getTitle(themeDisplay.getLocale()) /> 
96 
97        <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) /> 
98        <#assign rootElement = document.getRootElement()> 
99        <#assign contentXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='content']")> 
100 
101        <#assign hasContent = false /> 
102 
103        <#if (contentXPathSelector.selectSingleNode(rootElement))?has_content> 
104            <#assign hasContent = (htmlUtil.stripHtml(contentXPathSelector.selectSingleNode(rootElement).getStringValue())?trim?length > 0) /> 
105        </#if> 
106 
107        <#attempt> 
108            <#assign imgUrl = journalArticle.getArticleImageURL(themeDisplay) /> 
109            <#recover> 
110                <#assign imgUrl = "" /> 
111        </#attempt> 
112 
113        <#assign buttonColorCss = "moreButton--gold" /> 
114        <#if (theme.getData())?? && theme.getData() == 'navy'> 
115            <#assign buttonColorCss = "moreButton--white" /> 
116        </#if> 
117 
118        <div class="peopleSlider__item swiper-slide" style="<#if (numberOfPersons.getData())?? && numberOfPersons.getData() == '4'> width:25%;</#if>"> 
119            <!-- begin components/personCard --> 
120            <div class="personCard <#if (theme.getData())?? && theme.getData() == 'navy'>personCard--white</#if> peopleSlider__card"> 
121                <div class="personCard__avatar"> 
122                    <img 
123                            class="personCard__avatarImg" 
124                            src="${imgUrl}" 
125                            loading="lazy" 
126                            alt="avatar" /> 
127                </div> 
128                <div class="personCard__info"> 
129                    <h4 class="personCard__name">${title}</h4> 
130                    <div class="personCard__role">${description}</div> 
131                    <#if hasContent?? && hasContent> 
132                        <!-- begin components/moreButton --> 
133                        <button class="moreButton ${buttonColorCss} personCard__more" target="_self" data-popup-target="${randomNamespace}board-members" data-popup-data="{&quot;onMountEvents&quot;:[[&quot;PeoplePopupSliderSetSlide&quot;,{&quot;id&quot;:&quot;${randomNamespace}board-members&quot;,&quot;index&quot;:${index}}]]}"> 
134                            <span class="moreButton__text"><@liferay.language key="buttons.read-more" /></span> 
135                        </button> 
136                        <!-- end components/moreButton --> 
137                    </#if> 
138                </div> 
139            </div> 
140            <!-- end components/personCard --> 
141        </div> 
142    </#macro> 
143 
144    <#macro getPopup classPK> 
145        <#assign journalArticle = journalArticleService.getLatestArticle(classPK) /> 
146        <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale.toString())) /> 
147        <#assign rootElement = document.getRootElement()> 
148 
149        <#assign contentXPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='content']")> 
150 
151        <#assign content = "" /> 
152        <#if (contentXPathSelector.selectSingleNode(rootElement))?has_content> 
153            <#assign content = contentXPathSelector.selectSingleNode(rootElement).getStringValue() /> 
154        </#if> 
155 
156        <#assign description = journalArticle.getDescription(themeDisplay.getLocale()) /> 
157        <#assign title = journalArticle.getTitle(themeDisplay.getLocale()) /> 
158 
159        <#attempt> 
160            <#assign imgUrl = journalArticle.getArticleImageURL(themeDisplay) /> 
161            <#recover> 
162                <#assign imgUrl = "" /> 
163        </#attempt> 
164 
165        <div class="peoplePopup__item swiper-slide"> 
166            <!-- begin components/customScroll --> 
167            <div 
168                    class="customScroll peoplePopup__scroll" 
169                    data-custom-scroll> 
170                <div class="customScroll__scroll"> 
171                    <div class="peoplePopup__person wrapper"> 
172                        <div class="peoplePopup__avatar"> 
173                            <img 
174                                    class="peoplePopup__avatarImg" 
175                                    src="${imgUrl}" 
176                                    loading="lazy" 
177                                    alt="avatar" /> 
178                        </div> 
179                        <div class="peoplePopup__info"> 
180                            <h4 class="peoplePopup__name">${title}</h4> 
181                            <div class="peoplePopup__role">${description}</div> 
182                            <div class="peoplePopup__description">${content}</div> 
183                        </div> 
184                    </div> 
185                </div> 
186            </div> 
187            <!-- end components/customScroll --> 
188        </div> 
189    </#macro> 
190</#if> 

الإدارة التنفيذية

الإدارة التنفيذية

background background
avatar

جون باغانو  

الرئيس التنفيذي للمجموعة

avatar

أحمد غازي درويش

كبير الإداريين للمجموعة

avatar

د. مريم علي فيكتشلو 

رئيس الحوكمة للمجموعة

avatar

رائد البسيط 

رئيس البيئة والاستدامة للمجموعة

avatar

طارق مسملي 

رئيس إدارة المراجعة الداخلية للمجموعة

avatar

غريغوري جيريجان 

رئيس الإدارة القانونية والمدير التنفيذي لإدارة الاستثمارات للمجموعة

avatar

مارتن جرينسليد

رئيس المالية للمجموعة

avatar

بنجامين إدواردز

المدير التنفيذي لإدارة التكلفة والعمليات التجارية والمشتريات

avatar

جون دون

رئيس الصحة والسلامة للمجموعة

avatar

سيباستيان كاري

رئيس الضيافة للمجموعة

تواصل معنا

للمزيد حول البحر الأحمر الدولية، تواصل معنا
اتصل بنا الآن